我已经阅读了很多关于如何编写自己的随机数生成器的指南,所以我对为什么要编写自己的随机数生成器很感兴趣,因为大多数语言已经提供了生成随机数的函数:
像C++一样
srand(time(NULL));
rand();
C#
Random rand = new Random();
rand.Next(100);
和Java
Random rand = new Random();
rand.nextInt(0, 100);
我主要是在寻找使用你自己的优势。
我是用c++编程的两周新手,但要使这段代码按预期工作,我面临着挑战。我的目标是生成非重复的随机数。这是代码的一部分,
unsigned long seed = time(NULL);
int gsmNun (int l, int h)
{
srand(seed);
int user_phone = rand()%h+l;
return user_phone;
}
int main()
{
int z = gsmNun(70000000, 99999999);
for(int i=0; i<20; i++)
{
cout
我正在阅读布赖恩W.Kernighan和丹尼斯M.Ritchie的c编程语言一书。我不明白书中写的关于产生伪随机数的函数是这样的;
unsigned long int next = 1;
int rand(void)
{
next = next * 1103515243 + 12345;
return (unsigned int)(next / 65536) % 32768;
}
void srand(unsigned int seed)
{
next = seed;
}
我也试过我自己。但我只想出了以下几点
65536 = 16位无符号+1位的值
32768 =