David-Pluto 发表于 2020-6-10 13:56:34

有关c语言生成随机数,且保证每次生成数与前一个数不相同

如题,求问大佬。

David-Pluto 发表于 2020-6-10 13:57:45

具体来说,是想从0-3中随机10次,且保证每次的数字与上一次生成的不相同,这个C该怎么写呀,谢谢大佬!

小甲鱼的铁粉 发表于 2020-6-10 15:05:14

David-Pluto 发表于 2020-6-10 13:57
具体来说,是想从0-3中随机10次,且保证每次的数字与上一次生成的不相同,这个C该怎么写呀,谢谢大佬!

楼主,0-3只有4个数,每个随随机数不同的话也是只能有4个数呀,怎么随机10次呢

小甲鱼的铁粉 发表于 2020-6-10 15:16:30

好像明白了你的意思
#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;
}

小甲鱼的铁粉 发表于 2020-6-10 15:24:59

运行出来这个样子

sunrise085 发表于 2020-6-10 15:46:21

#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;
}

liwenyang 发表于 2020-6-10 17:54:15

小甲鱼的铁粉 发表于 2020-6-10 15:05
楼主,0-3只有4个数,每个随随机数不同的话也是只能有4个数呀,怎么随机10次呢

只是与上一次不同

Neverturnback 发表于 2020-6-11 09:14:32

本帖最后由 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]
查看完整版本: 有关c语言生成随机数,且保证每次生成数与前一个数不相同