我在C中编写了一个简单的随机数生成器,int l它是下限,int u是上限.
它运作得很好,但我有一个关于播种它的问题.如果我在循环中运行它,time(NULL)不会足够快地更改种子值,以防止获得完全相同的连续系列随机数.
我想知道其他人怎么可能解决这个问题.我在网上找到的所有例子都time(NULL)用作种子值生成器.
int generateRandom(int l, int u)
{
srand(time(NULL));
int r = rand() % ((u - l) + 1);
r = l + r;
return r;
}
Run Code Online (Sandbox Code Playgroud)
如果我是紧挨着彼此碰撞的几行代码,无论是Rand1和Rand2是完全一样的.
printf("Rand1 = %d\n", generateRandom(10, 46));
printf("Rand2 = %d\n", generateRandom(10, 46));
Run Code Online (Sandbox Code Playgroud) 可能重复:
调用rand()返回非随机结果
在我的工作室中,我需要2个不同的随机数,但我得到2个相同的随机数.
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int random1_6(){
int k;
srand(time(0));
k=((rand()%6)+1);
return k;
}
int main(void){
int a,b;
a=random1_6();
printf("%d.\n",a);
b=random1_6();
printf("%d.\n",b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如何获得2个不同的随机数?
c ×2