产生这种条件下的随机数

ascap 2005-11-03 06:54:56
每次产生的随机数是在1-60之间的,而且不能有重复,谢谢大家了
...全文
225 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wumingchenchao 2005-12-01
  • 打赏
  • 举报
回复
学习了
nale 2005-11-30
  • 打赏
  • 举报
回复
to:EnginePlus(额外动力)
如果n1和n2的数量级相差较大,那么生成的temp值较小,得到的result的值可能小于1.
EnginePlus 2005-11-30
  • 打赏
  • 举报
回复
我是菜鸟 说个菜办法

MSDN 有个产生随机数的程序 这个你搜一下就知道了
你产生 2次 随机数 n1 n2
然后 float temp = (n1>n2 ? n2/n1 : n2/n1)
然后 result = 60* temp ;
因为 temp 是 0 -1 之间的随机数

所以 result 就是0-60 之间的随机数

这是个土办法

扩展一下 利用这个temp 可以产生 a - b 之间的是随机数(假设a < b)
result = (b-a)*temp + a ;

这个随机类型完全取决于 temp 的随机类型



zlcolin 2005-11-30
  • 打赏
  • 举报
回复
飞天御剑流之杀神一刀斩的算法效率比较高啊,学习了。
zlcolin 2005-11-30
  • 打赏
  • 举报
回复
我来一个
#include<iostream.h>
#include<time.h>
void main()
{
char a[60];
int i;
for(i=0;i<60;i++)
{
loop:
a[i]=rand()%60;
for(int n=i-1;n>=0;n--)
{
if(a[i]==a[n])
goto loop;
}
}
for(i=0;i<60;i++)
cout<<a[i]<<",";
}







xiaocai0001 2005-11-07
  • 打赏
  • 举报
回复
赞成楼上的, 随机交换.

不过随机性有待考虑.
megaboy 2005-11-07
  • 打赏
  • 举报
回复
char a[60];
for(i=0; i<=59; ++i) a[i]=i;
for(i=59; i>=1; --i) swap(a[i], a[rand()%i]);
fine10000 2005-11-07
  • 打赏
  • 举报
回复
学习
tb01412 2005-11-07
  • 打赏
  • 举报
回复
同意楼上的,典型的发牌程序,只不过扑克牌是54张而已
xiahaiqing 2005-11-07
  • 打赏
  • 举报
回复
先定义一个60个的数组,其中装上1~60,然后产生一个1~60的随机数。再从数组中去掉这个数,然后产生一个1~59的随机数,如此循环60次
snowbirdfly 2005-11-03
  • 打赏
  • 举报
回复
每次产生的随机数是在1-60之间的,而且不能有重复
楼主每次产生多少组啊~~`

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧