我创建了一个函数,它创建一个0到9之间的随机数,但是当我在一个for循环中调用main函数时,索引i = 0;我< n; i ++它打印1个随机数n种类型。但我想要打印n次不同的值。 这是我做的代码: -
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void random_variable() {
int i;
srand(time(NULL));
i = rand()%10;
printf("%d ",i);
}
main() {
for(int j=0;j<10;j++) {
random_variable();
}
}
输出是这样的: -
请点击链接查看输出: - here instead of 8 ten times i needed 10 different values
答案 0 :(得分:5)
srand()
初始化标准C库的PRNG(伪随机数生成器)。 PRNG的工作原理是对内部存储的值应用或多或少复杂的算术运算,并将结果的一部分作为下一个&#34; random&#34;数。 srand()
设置此内部状态。
如果您每次在函数中调用srand()
,您都不会获得(明智的)随机数,因为每次都会重置内部状态。程序启动后调用它。
答案 1 :(得分:1)
srand()
种子随机数。你想这样做一次,而不是每次都这样做。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void random_variable() {
int i;
i = rand()%10;
printf("%d ",i);
}
main() {
srand(time(NULL));
for(int j=0;j<10;j++) {
random_variable();
}
}