| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7955 人关注过本帖
标题:怎么产生四个不同的随机数
只看楼主 加入收藏
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
结帖率:95.45%
收藏
已结贴  问题点数:5 回复次数:5 
怎么产生四个不同的随机数
陈述问题 我想产生四个不同的随机数,例如4 5 6 8
第一位不能为0,怎么办到?
2016-12-08 22:26
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
可以用rand()函数
2016-12-08 22:32
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
收藏
得分:0 
回复 2楼 linlulu001
是,但是不知道怎么让四个数不同,加判断吗?

Code is my life.
2016-12-08 22:34
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:2 
#include<stdio.h>
#include<time.h>
int main()
{
    int num[4];int i=0;int idx;
    printf("Press any key to continue...\n");
    srand((unsigned int)time(0));
    do
    {
    i=0;
    do
    {
        do
            num[i]=rand()%10;
        while(num[0]==0);
        for(idx=i-1;idx>=0;idx--)
        {
            if(num[i]==num[idx])
                break;
        }
        if(idx<0) i++;
    }while(i<4);
    printf("%d,%d,%d,%d\n",num[0],num[1],num[2],num[3]);
    printf("To try it again?(y/n)\n");
    }while(getch()=='y');
    return 0;
}
2016-12-08 22:54
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:2 
要用上判断。根据多少个数用不同的方法来判断。
例如4个数,分别判断就可以了,并不复杂。
如果很多数,那么就要得用到数组来帮忙判断了。
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main()
{
    int num[10];
    int i,n=9;
    printf("Press any key to continue...\n");
    for(int k=0;k<11;++k) num[k]=1;    //初始化数组
    srand((unsigned int)time(0));
    while(n--)
    {
        i=rand()%9+1;        //生成1-9之间的随机数
        printf("%d ",i);     //将生成的随机数打印出来更直观
        if(num[i]) num[i]=0;   
        else n++;        //说明之前生成相同的随机数。   
    }  
    printf("\n");  
   for(int k=0;k<10;++k)
       if(!(num[k])) printf("%d ",k);    //k就是生成的随机数
   return 0;
}
要生成更多数就改变数组num下标就行了。这种方法缺点也很明显,就是数组随着生成数的范围增大而增大。
优点也很明显,因为每次生成随机数不用遍历数组,所以生成的个数越接近范围值,优势越明显。

[此贴子已经被作者于2016-12-8 23:34编辑过]

2016-12-08 23:08
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:1 
其实也可以先输入有序数组,然后随机交换就行了,这样看上去就像随机序列,这类似于洗牌。t1=rand()%99,t2=rand()%99;temp=a[t1],a[t1]=a[t2],a[t2]=temp;但是这种方法只适用于预先确定生成值的数据,如果随机产生n个a-b范围内的数判断有没有重复,得要把之前产生的随机数进行保存

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-08 23:23
快速回复:怎么产生四个不同的随机数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015092 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved