| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3629 人关注过本帖
标题:c语言有不重复随机数函数吗?
只看楼主 加入收藏
chen7806
Rank: 1
等 级:新手上路
威 望:2
帖 子:160
专家分:0
注 册:2007-8-5
收藏
 问题点数:0 回复次数:18 
c语言有不重复随机数函数吗?
比如:单位开奖都要求这个函数,不知道怎么写?刚学,请老师们大量。
搜索更多相关主题的帖子: 随机数 c语言 函数 
2007-08-29 14:25
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
C本身没有这个函数



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

请大家不要用TC来学习C语言
C/C++算法习题(OnlineJudge):[url]http://yzfy.org/[/url]
2007-08-29 14:26
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 

开奖的数值范围肯定很小,例如,在1~1000中,你可以这样

int a[1000]={1,2,......1000}
然后,随机打乱
for(....)//这里循环多少次,你自己看着办
{
int k=rand()%1000;
int k1=rand()%1000;
int tmp =a[k];
a[k]=a[k1];
a[k1]=tem;
}

然后,你想要几个,就有几个了


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2007-08-29 14:32
大年初四
Rank: 1
等 级:新手上路
帖 子:641
专家分:2
注 册:2007-2-21
收藏
得分:0 
太容易了,每生成一个随机数都把它储存在一个字符串中  ,34,2348,2387423,20347328,3045, 这样用逗号隔开,下次再生成一个随机数的时候用函数查找这个字符串有没有重复的,如查找 ,32894, 如果有重复的就不用,没有重复的就用

大年初三可怜怜,初四晚上饭一碗
2007-08-29 14:32
大年初四
Rank: 1
等 级:新手上路
帖 子:641
专家分:2
注 册:2007-2-21
收藏
得分:0 
没想到3楼的占了先了,不知道是保存在数组中更节省资源还是保存在字符串中更节省资源

大年初三可怜怜,初四晚上饭一碗
2007-08-29 14:34
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
如果开奖的号不多是你的算法更好,如果开奖的号在总的数中占的比例比较高则是我的方法比较好.

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2007-08-29 14:39
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
当然,你的算法如果用数组更节省资源

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2007-08-29 14:40
chen7806
Rank: 1
等 级:新手上路
威 望:2
帖 子:160
专家分:0
注 册:2007-8-5
收藏
得分:0 
谢谢老师们。我试试。再回话。
2007-08-29 16:23
Maltase
Rank: 1
等 级:新手上路
帖 子:105
专家分:0
注 册:2007-8-7
收藏
得分:0 
头文件是time.h
srand((unsigned)time(NULL));
这个是生成随即数的

读书....努力读书.....
2007-08-29 19:17
chen7806
Rank: 1
等 级:新手上路
威 望:2
帖 子:160
专家分:0
注 册:2007-8-5
收藏
得分:0 

想了很久,还是加了一个goto语句,数字好象不重复了,请老师们纠正!

#include "stdio.h"
#include "time.h"
#include "stdlib.h"
#include "string.h"
#define N 20 //设置奖品个数;
#define M 500 //参加抽奖人数;
int main()
{
int i,s,k=0,a[N];
printf("本次设置奖品数%d个;\n",N);
printf("本次参加抽奖人数%d人;\n",M);
getchar();
srand(time(NULL));
for(k=0;k<N;k++)
ch:
{i=rand()%M;
{for(s=0;s<k;s++)
if(i==a[s]) goto ch;
a[k]=i;}
printf("%d\t",a[k]);}
}

2007-08-30 08:46
快速回复:c语言有不重复随机数函数吗?
数据加载中...
 
   



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

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