关于产生随机数的问题~~

kikiko 2004-11-21 10:01:35
#include <iostream>
void main( void )
{
int i;

for( i = 0; i < 10;i++ )
std::cout<<rand()%100+1<<'\n';
}

谁能告诉我“rand()%100+1” 代表什么意思呢???,我的推测(范围0~100,种子为1, 这样产生的随机数每次都是一样的 第一个是42 第三个是1)
在c++下怎样获得一个真正的随机数呢?
我知道,rand()是不能产生真正的随机数的,各种编程语言返回的随机数(确切地说是伪随机数)实际上都是根据给的种子和递推公式计算的一组数值。 那要产生随机数还要产生随机种子,那要rand()来做什么??
我看到,很多程序使用时间来作为随机种子又是怎么回事呢?
谢~~
...全文
248 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
beepbug 2004-11-23
  • 打赏
  • 举报
回复
srand(time(0))用来置随机数种子。以确保每次运行程序时能取得不同的随机数序列。
语句srand(time(0));放在程序的首部,只需执行一次。
程序里每当需要随机数时,就要rand()函数取随机数。
spider_xm 2004-11-23
  • 打赏
  • 举报
回复
~~其实用时间作为随机种子产生的是一个等差数列~~
----------------------------------------------

really?
newegg2002 2004-11-23
  • 打赏
  • 举报
回复
使用伪随机函数:
#include <ctime>
#include <cstdlib>

srand(time(0));
用rand()生成你想要的随机值,,
利用取模及加法,可以设定范围,,
guyu123456 2004-11-23
  • 打赏
  • 举报
回复
#include <iostream>

int main()
{
srand(time(0));
for(int i = 0;i < 10;i++)
std::cout<<rand()%100+1<<std::endl;
}
srand(time(0));利用系统时间为种子产生随机整数,rand()%100产生0--99的整数,rand()%100+1产生1--100的整数.
BinaryWorld 2004-11-23
  • 打赏
  • 举报
回复
1。谁能告诉我“rand()%100+1” 代表什么意思呢???,我的推测(范围0~100,种子为1, 这样产生的随机数每次都是一样的 第一个是42 第三个是1)

rand()产生随机数,然后得到100以内的余数,例如80%100=80,180%100=80,这个值是0~99之间的,加上1以后呢就是1~100之间的随机数。



1。在c++下怎样获得一个真正的随机数呢?
我知道,rand()是不能产生真正的随机数的,各种编程语言返回的随机数(确切地说是伪随机数)实际上都是根据给的种子和递推公式计算的一组数值。 那要产生随机数还要产生随机种子,那要rand()来做什么??
我看到,很多程序使用时间来作为随机种子又是怎么回事呢?
谢~~

2。随机是什么概念,万事追随到最底层都没有随机了。计算机里面通常是使用时间来完成随机的,因为任何时刻的时间是不一样的,我们当前的时间,依据当前的时间再根据某种快速的算法来得到的数字就是rand()的返回值,rand()每次都一样是因为,你没设置种子,它就按照默认的算法构造出来的。使用当前的时间,rand()会把当前时间作为参数传递进去,得出的结果就是随机的。
这个种子你可以随意设置,你也可以设置一个局部变量,将未初始化的值传递进去。
houdy 2004-11-23
  • 打赏
  • 举报
回复
rand()%x
------
rand()产生0-RAND_MAX之间的随机数,然后用一个取模运算符将值的范围缩小到[0,x-1]的范围,在加1,就是把范围平移到[1,x].
草山湖 2004-11-23
  • 打赏
  • 举报
回复
#include <iostream>

int main()
{
srand(time(0));
for(int i = 0;i < 10;i++)
std::cout<<rand()%100+1<<std::endl;
}
CgPanda_ 2004-11-22
  • 打赏
  • 举报
回复
我认为楼上说的对啊
penglewen 2004-11-22
  • 打赏
  • 举报
回复
rand()%x 是产生0-- (x-1)之间的数!详细的看看教材!应该上面有啦!
kikiko 2004-11-22
  • 打赏
  • 举报
回复
3楼的:这样说来rand()%100+100 产生的数就一定是100咯, 运行看看~~不是吧~
4楼的:srand()是seed rand() 的意思~~而且需要unsight~~其实用时间作为随机种子产生的是一个等差数列~~
greenteanet 2004-11-22
  • 打赏
  • 举报
回复
同意楼上看法...
spider_xm 2004-11-21
  • 打赏
  • 举报
回复
srand(time(0))
一般可以用当前时间作为参数来产生种子。
Andy84920 2004-11-21
  • 打赏
  • 举报
回复
谁能告诉我“rand()%100+1” 代表什么意思呢???,
//rand()产生0-RAND_MAX之间的随机数,你%100+1就表示产生1-100之间的随机数.

我的推测(范围0~100,种子为1, 这样产生的随机数每次都是一样的 第一个是42 第三个是1)
在c++下怎样获得一个真正的随机数呢?
//可以用srand(0),rand();

我知道,rand()是不能产生真正的随机数的,各种编程语言返回的随机数(确切地说是伪随机数)实际上都是根据给的种子和递推公式计算的一组数值。 那要产生随机数还要产生随机种子,那要rand()来做什么??
我看到,很多程序使用时间来作为随机种子又是怎么回事呢?
谢~~
liudaqin 2004-11-21
  • 打赏
  • 举报
回复
我记得好像有这个函数 srand(参数)可以产生随机数,你可以查一下

65,186

社区成员

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

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