社区
数据结构与算法
帖子详情
请问怎样处理,在1-1000之间产生100个随机数,让这些随机数不重复,怎么办。。
lz98630
2001-11-05 04:15:56
请问怎样处理,在1-1000之间产生100个随机数,让这些随机数不重复,怎么办。。
...全文
602
12
打赏
收藏
请问怎样处理,在1-1000之间产生100个随机数,让这些随机数不重复,怎么办。。
请问怎样处理,在1-1000之间产生100个随机数,让这些随机数不重复,怎么办。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
leojay
2001-11-07
打赏
举报
回复
我的方法,
a[0]=rand()*10+1;
for(int i=1; i<100;i++)
a[i]=a[i-1]+rand()*10+1;
简单,一定不会重复。
孩皮妞野
2001-11-07
打赏
举报
回复
#include <algorithm>
#include <iostream>
using namespace std;
int buff[1000];
for(int i=0;i<1000;i++)
buff[i]=i;
//楼上说的交换算法已经在stl的random_shuffle中实现了
//如果你有幸使用的是C++,就不用费劲自己写代码了
random_shuffle(buff,buff+1000);
//now the first 100 elements meet your requirement
for(int i=0; i<100;i++)
cout<<buff[i]<<" ";
franking
2001-11-06
打赏
举报
回复
msdn
lazecat
2001-11-06
打赏
举报
回复
先定义一个含有一千个元素的数组A[999],让A[0]=0,A[1]=1,A[2]=2 …… A[999]=[999]。
然后从0到999取一个随机数N,然后和第 999-N 的元素交换数据。如果要取100个数据,就做100次循环,取前A[0]到A[99],就是你要的数据。
最坏的结果就是每次都取1,都和第998个元素交换数据,经过100次循环后,你得到的结果就应该是0,1,2,3,4,5,…… ,99。如果在从0到999取随机数时取出了0,1,2,3, …… ,99,经过100次运算后,数组就变成999,998,997,996, …… 3,2,1,0。这样,取出的数据就是:999,998,997,996, ……
明白了?
hotyei
2001-11-06
打赏
举报
回复
看到了吗?已经取得的值就和数组的最后一个数替换。而循环的第一句就是如果取1000-i数组之间的值,也就是说,当取了第一个值时,第二个值就只能取前999个值了,而第1000个值就是已经取过的了。
frman
2001-11-06
打赏
举报
回复
俺还是觉得Arter的办法好:)
lz98630
2001-11-06
打赏
举报
回复
to hotyei(花心萝卜)
由于我是一个初学者,最后一句(Array[R]=Array[1000-i]; //程序关键)没有理解。可以说简单点不。
Arter
2001-11-06
打赏
举报
回复
设范围: a[0]..a[M-1](M>=N)
将这M个数进行任意次的两两交换,由随机数产生下标.
然后,M个数的前N个数即是.
hotyei
2001-11-06
打赏
举报
回复
定义一个数组int Arrary[1000];
int Store[100];//这个数组用来装随机数的
for (int i=1;i<=1000;i++
Array[i]=i;
//产生100个随机数
for (int i=0;i<100;i++)
{
int R=rand()%(1000-i);
Store[i]=Array[R]; //保存随机数
Array[R]=Array[1000-i]; //程序关键
}
flagfly
2001-11-06
打赏
举报
回复
没办法不重复,只能重复后抛弃再选取。
liuer
2001-11-05
打赏
举报
回复
一本参考书上的例子:
INT(RAN *10)
RANDMIZE
上面这个单词也许写错了,但反正有这样一个VB语句吧,这样就绝不会有重复的随机数了
KingOf007
2001-11-05
打赏
举报
回复
rand()看看有没有重复。如果有就再rand()
VB生成不
重复
的
随机数
VB生成不
重复
的
随机数
我的建议是:第一步、先做一个数组,存上这35个数(可以不是连续的数,也可以是人名、字符串什么的);第二步、随机生成一个1-35
之间
的数,输出;第三步:把这个数和数组的第一个单元交换;第四步、从数组的第2-35
之间
随机抽取第二个数,输出;第五步、把这随机抽取的第二个数和数组的第二个单元内容呼唤;第六步、随机抽取第三个数,输出。。。。。
重复
到从第35-35个数
之间
随机抽取一个数,这时直接输出最后一个就行了。
C#
产生
不
重复
的
随机数
C#
产生
不
重复
的
随机数
.txt
西门子PLC
随机数
产生
使用博图V15软件编程,S7-1500PLC进行
随机数
产生
,并通过触摸屏趋势图显示。
随机数
主要通过截取时间和使用全球库函数
java生成十个不
重复
的
随机数
java生成十个不
重复
的
随机数
,要求不
重复
delphi
产生
不同
随机数
产生
不同
随机数
,利用delphi
产生
不同
随机数
。
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章