有关c语言生成随机数,且保证每次生成数与前一个数不相同
如题,求问大佬。 具体来说,是想从0-3中随机10次,且保证每次的数字与上一次生成的不相同,这个C该怎么写呀,谢谢大佬!David-Pluto 发表于 2020-6-10 13:57
具体来说,是想从0-3中随机10次,且保证每次的数字与上一次生成的不相同,这个C该怎么写呀,谢谢大佬!
楼主,0-3只有4个数,每个随随机数不同的话也是只能有4个数呀,怎么随机10次呢 好像明白了你的意思
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int a,flag=-1;
srand(time(NULL));
for(int i=0;i<10;i++)
{
a=rand()%4;
while(a==flag)
a=rand()%4;
printf("%d ",a);
flag=a;
}
return 0;
} 运行出来这个样子
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
int data,i;
time_t t;
srand((unsigned)time(&t));//初始化随机数发生器,以防每次运行的生成数一样
for(i=0;i<10;i++)
{
data=rand()%4;//生成一个0-4的随机数
while(i>0&&data==data)//若与上一个数一样,则重新生成
data=rand()%4;
}
for(i=0;i<10;i++)
printf("%d",data);//输出
return 0;
} 小甲鱼的铁粉 发表于 2020-6-10 15:05
楼主,0-3只有4个数,每个随随机数不同的话也是只能有4个数呀,怎么随机10次呢
只是与上一次不同
本帖最后由 Neverturnback 于 2020-6-11 09:20 编辑
#include<stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
int main()
{
int date = 0;
srand(time(NULL));
for (int i = 0; i < N; i++)
printf("%d ", (date += rand() % 3 + 1) % 5);
getchar();
return 0;
}
页:
[1]