C 种子和随机数生成

C 种子和随机数生成,c,C,我试图理解c语言中的随机生成函数 函数返回的随机数取决于它的初始值, 称为种子,该种子在程序每次运行时都保持不变。这意味着程序生成的随机数序列在程序每次运行时都完全相同 因此,这可以通过使用另一个函数--srand(seed)来解决,该函数将在每次运行时使用不同的种子值,从而在每次运行时产生不同的随机值集。为了给这个随机数发生器设定一个任意值,可以使用系统时钟。总而言之: 时间用作种子值 所以在实现srand(seed)-函数之后,生成reallt的随机数工作得很好,但是-我不理解的是,seed

我试图理解c语言中的随机生成函数

函数返回的随机数取决于它的初始值, 称为种子,该种子在程序每次运行时都保持不变。这意味着程序生成的随机数序列在程序每次运行时都完全相同

因此,这可以通过使用另一个函数--srand(seed)来解决,该函数将在每次运行时使用不同的种子值,从而在每次运行时产生不同的随机值集。为了给这个随机数发生器设定一个任意值,可以使用系统时钟。总而言之: 时间用作种子值

所以在实现srand(seed)-函数之后,生成reallt的随机数工作得很好,但是-我不理解的是,seed值总是相同的。我认为对随机数生成器进行种子设定的整个想法是在每次程序执行时使用一个新的种子值。但是在Eclipse的控制台窗口中,种子值似乎每次都是相同的。E4071056、4071056、4071056、4071056、4071056、4071056、4071056

以及生成的随机数,例如:1,6,5,5,1,4

从……那里得到信息

编辑: *我想我现在明白了。在java中,int和void之间可能存在不匹配错误,

int t = srand(time(NULL));
printf("seed value: %d \n", t);
int rand_nmbr = (rand() % 6 + 1);
printf("dice face: %d ", rand_nmbr);

srand
不返回值;它的原型是

void srand(unsigned int seed);
srand
的(不存在)结果分配给
t
是一个编码错误;你只是在打印垃圾

如果要查看种子使用的实际值

time_t t;
time(&t);
srand(t);

srand
不返回值;它的原型是

void srand(unsigned int seed);
srand
的(不存在)结果分配给
t
是一个编码错误;你只是在打印垃圾

如果要查看种子使用的实际值

time_t t;
time(&t);
srand(t);
srand()
函数属于
void
类型,不返回任何内容。您的编译器应该为此提供错误信息

[Error] void value not ignored as it ought to be  
通过将函数赋值给变量来调用
void
函数是错误的

srand()
函数属于
void
类型,不返回任何内容。您的编译器应该为此提供错误信息

[Error] void value not ignored as it ought to be  

通过将函数赋值给变量来调用
void
函数是错误的

嗯。。。您是否需要退货?说它没有…你的代码犯了一个错误。编译器应该告诉你的。这个问题没有道理。嗯。。。您是否需要退货?说它没有…你的代码犯了一个错误。编译器应该告诉你的。这个问题没有道理。