cuốn sách gpt4 ai đã làm

c++ số ngẫu nhiên giữa hai số nguyên sử dụng WELL512

In lại Tác giả: Walker 123 Thời gian cập nhật: 27-11-2023 23:01:13 27 4
mua khóa gpt4 Nike

Tôi đã thấy câu hỏi nàykhả thiĐã trả lời ở đây:Ngẫu nhiên sử dụng WELL512

Tuy nhiên, nó không thân thiện với người dùng và không cung cấp ví dụ về cách sử dụng nó trong các đoạn mã "thế giới thực".

Đây là những gì tôi hiện có:

#define m (dài không dấu)2147483647
#define q (dài không dấu)127773
#define a (unsigned int)16807
#define r (unsign int)2836

hạt dài tĩnh không dấu;
void x_srandom(unsigned long first_seed);
dài không dấu x_random(void);

void x_srandom(unsigned long first_seed)
{
hạt giống = ban đầu_seed;
}

x_random dài không dấu (void)
{
int lo, chào, kiểm tra;

chào = (hạt/q);
lo = (hạt %q);

test = (a*lo - r*hi);

nếu (kiểm tra > 0)
hạt giống = thử nghiệm;
khác
hạt giống = (kiểm tra + m);

trả lại (hạt giống);
}

int RANDOM(int từ, int đến)
{
nếu (từ > đến)
{
int tmp = từ;
từ = đến;
tới = tmp;
}
return ((x_random() % (đến - từ + 1)) + từ);
}

// Hàm thế giới thực sử dụng RANDOM()
void testFunction()
{
printf("Một số ngẫu nhiên từ 1 đến 1000 là %d \r\n", RANDOM(1, 1000));
printf("Một số ngẫu nhiên từ 36 đến 100 là %d \r\n", RANDOM(36, 100));
printf("Một số ngẫu nhiên từ 1 đến 2147483647 là %d \r\n", RANDOM(1, 2147483647));
printf("Một số ngẫu nhiên từ 1 đến 5 là %d \r\n", RANDOM(1, 5));
}

Ví dụ trên cho thấy mọi thứ bạn cần biết để triển khai nó.

Tôi muốn sử dụng WELL512 để xác định các số ngẫu nhiên của mình thay vì cách tôi hiện đang sử dụng, làm theo ví dụ trên.

câu trả lời hay nhất

Đã đến lúc từ bỏ việc sử dụng % để tạo phân phối.

Đối với tôi, bạn nên sử dụng WELL512 làm trình tạo số ngẫu nhiên thống nhất (như mt19937 trong thư viện chuẩn). Bạn gói nó trong một lớp hiển thị (hoặc sử dụng) một typedef cho result_type. Trong trường hợp của bạn, đây có thể là một đoạn dài không dấu. Sau đó, bạn cần hai constexpr cho min() và max(). Đó sẽ là 0 và ULONG_MAX. Cuối cùng, bạn cần hiển thị operator() trả về một giá trị dài không dấu.

Sau đó bạn có thể sử dụng Các tính năng cùng với động cơ của bạn.

lớp tốt512 {
công cộng:
typedef không dấu kết quả dài_type;
constexpr result_type min() { return 0 }
constexpr result_type max() { return ULONG_MAX }
result_type operator()() { /* trả về một số giá trị từ quá trình triển khai well512 cơ bản */ }
};

int chính()
{
động cơ well512();
std::uniform_int_distribution<> phân phối { 1, 5 };

vì (int i = 0; i != 10; ++i)
{
std::cout << dist(engine) << std::endl;
}
trả về 0;
}

Về số ngẫu nhiên c++ giữa hai số nguyên sử dụng WELL512, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/27463757/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress