| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4318 人关注过本帖
标题:如何产生大于等于0且小于100的10个不相同的随机数?
只看楼主 加入收藏
xichong
Rank: 7Rank: 7Rank: 7
来 自:四川南充
等 级:黑侠
威 望:2
帖 子:146
专家分:582
注 册:2009-6-10
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
如何产生大于等于0且小于100的10个不相同的随机数?
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
main(){
int i,a[10];
srand(time(0));
for(i=0;i<10;i++)
a[i]=rand()%100;
for(i=0;i<10;i++)
printf("%d\n",a[i]);
}

 
图片附件: 游客没有浏览图片的权限,请 登录注册

大部分时间都是对的,但有时还是出现了重复的值,怎么解决呢??
搜索更多相关主题的帖子: 随机数 
2010-05-24 14:30
ww稻草人
Rank: 5Rank: 5
来 自:陕西西安
等 级:职业侠客
帖 子:57
专家分:309
注 册:2010-5-11
收藏
得分:5 
看看这篇文章  http://zhidao.baidu.com/question/115416879.html

我的博客  http://blog..cn/daocaoren020
2010-05-24 15:09
ubuntulover
Rank: 4
等 级:业余侠客
帖 子:77
专家分:256
注 册:2010-4-9
收藏
得分:10 
反正只有十个数,又不多,你可以在产生一个随即数时,即与已有的数进行对比,如果已经有这个数了,就丢弃这个数,重新再产生一个就行了
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int index;
int num[10];
int find(int keynum);
int main()
{
    int randnum,i;
    srand(time(NULL));
    while(index<10){
        randnum = rand()%100;
        if(find(randnum))
            continue;
        num[index++] = randnum;
    }
   
    for(i=0;i<10;i++)
        printf("%d ",num[i]);
    printf("\n");

    return 0;

}
/*
 *找到了返回1,否则返回0
 */
int find(int keynum)
{
    int i;
    for(i=0;i<=index;i++){
        if(num[i] == keynum)
            return 1;
    }

    return 0;

}
2010-05-24 15:53
lxqq1000
Rank: 2
等 级:论坛游民
帖 子:23
专家分:30
注 册:2010-5-19
收藏
得分:5 
rand()是0-32767随机数rand()%100是对其求余比如1297 和11297 都是97
不过概率比较小 srand(time(0))是以时间作为种子来产生随机数
2010-05-24 16:11
xichong
Rank: 7Rank: 7Rank: 7
来 自:四川南充
等 级:黑侠
威 望:2
帖 子:146
专家分:582
注 册:2009-6-10
收藏
得分:0 
我明白了,谢谢了!
2010-05-24 22:36
快速回复:如何产生大于等于0且小于100的10个不相同的随机数?
数据加载中...
 
   



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

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