取1~500之间的随机数,怎么实现(C++实现)?谢谢~

8250089 2006-03-28 03:28:02
是用rand()吗?
它没有参数,应该怎么实现?
谢谢~
...全文
1060 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanchuang 2006-03-29
  • 打赏
  • 举报
回复
Jiana(Robin.English):
不好意思,是我看错题目了。

我在这个论坛上不知犯过多少次这样的错误了,可是一直没有能改过来
努力改ing
dong8848 2006-03-29
  • 打赏
  • 举报
回复
学习一下。
fabio210 2006-03-28
  • 打赏
  • 举报
回复
#include <time.h>
srand((unsigned)time(NULL));
rand()/double(RAND_MAX)*500+1.0;
shark0001 2006-03-28
  • 打赏
  • 举报
回复
偶认为 要看谁的编译器了,有的编译器产生的rand()是0--1
而有的则不是,我用的VC,在VC里面,先来一个srand(1)(任意整数,随机数,假设)

则int k = rand(); k就是一个任意大小的随机数,如果你想要1-500之间的可这像楼上说的那样,
来一个k = k%500+1;
gooderfeng 2006-03-28
  • 打赏
  • 举报
回复
就是rand的问题,怎么弄的这么复杂。
srand一般使用时间做种子比较好。
hlnumber1 2006-03-28
  • 打赏
  • 举报
回复
我来解释一下:
伪随机函数:rand() 返回值: 0~32767之间的一个整数
随机化函数 srand(unsiged int seed) 随机化种子,种子值不同可使rand产生不同的随机序列
hlnumber1 2006-03-28
  • 打赏
  • 举报
回复
你们没有给人家讲srand()是干什么的
Jiana 2006-03-28
  • 打赏
  • 举报
回复
int n;
int d;
srand(time(NULL));
d = (int)(double)rand() / ((double) RAND_MAX +1);
n = d * 500+1;
怎么错了?
Jiana 2006-03-28
  • 打赏
  • 举报
回复
1~500
你那是0-500
yuanchuang 2006-03-28
  • 打赏
  • 举报
回复
Jiana(Robin.English):
哈哈,看来你没有看懂我的代码的意思啊。
经你这么一改,那就不对了。
Jiana 2006-03-28
  • 打赏
  • 举报
回复

yuanchuang(元创)
的方法比我的好些,去掉0就可以

int n;
double d;
srand(time(NULL));
d = (double)rand() / (double) RAND_MAX ;
n = d * 500+1;
Jiana 2006-03-28
  • 打赏
  • 举报
回复
上面的rand()的问题是从0-500,改
for(int i=10;i>0;i--) cout<<(rand()*500)/RAND_MAX+1<<" ";//这里是所要的随机数

由于有比其它数要小的概率产生501,自己判断去掉501
duanliyu 2006-03-28
  • 打赏
  • 举报
回复
在vc环境下:
#include<iostream>
#include<stdlib.h>
#include<time.h>
void main()
{
int m=0;
srand((unsigned)time(NULL));//以时间为种子
for(int i = 0;i<=9;i++)//假如要得到10个随机数
{
m=rand()%500;
cout<<"第"<<(i+1)<<"个数是:"<<m<<endl;
}
}
yuanchuang 2006-03-28
  • 打赏
  • 举报
回复
for(int i=10;i>0;i--) cout<<(rand()*500)/RAND_MAX<<" ";//这里是所要的随机数

-----------------------------------------------------------------------
此种方法行不通,(rand()*500)会越界。
Jiana 2006-03-28
  • 打赏
  • 举报
回复
#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
time_t t;//先取时间

srand((unsigned)time(&t));//以时间为种子
rand();//抛弃第一个
for(int i=10;i>0;i--) cout<<(rand()*500)/RAND_MAX<<" ";//这里是所要的随机数
yuanchuang 2006-03-28
  • 打赏
  • 举报
回复
int n;
double d
srand(time(NULL));
d = (double)rand() / ((double) RAND_MAX + 1);
n = d * 501;
Jchangcheng 2006-03-28
  • 打赏
  • 举报
回复
rand()是虚随机的,也可说程序中实现的随机都是虚随机,它是有规律的。
虚随机是怎么实现的~~??自己查看。
iamcaicainiao 2006-03-28
  • 打赏
  • 举报
回复
除以500,得0到499之间。故而加1。
rand()函数生成的数并不很随机,加个时间。
flyrain000 2006-03-28
  • 打赏
  • 举报
回复
rand()函数生成的数并不很随机
8250089 2006-03-28
  • 打赏
  • 举报
回复
rand()函数它是那个范围的随机数阿〉??
加载更多回复(6)

64,663

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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