问个基础问题:C++如何产生随即数?

qq25539088 2009-04-29 09:19:11
要求:每次运行状态所输出的数都不同
简单点的,还有别忘了写上注释!
...全文
168 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qqweinizhizhuo 2009-04-29
  • 打赏
  • 举报
回复
 编程时有时需要随机输入一些数,这是调用随机函数可以完成此相命令.

  # include “stdio.h”
  # include “stdlib.h”
  # include “time.h” /*需引用的头文件*/
  srand((unsigned)time(NULL)); /*随机种子*/
  n=rand()%(Y-X+1)+X; /*n为X~Y之间的随机数*/
jakqigle 2009-04-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lingyin55 的回复:]
for( int i = 0; i < 100; i++ )
{

tmpRand = rand() % i;
//貌似会出现除零错误!

tmpVar = randSave[i];
randSave[i] = randSave[tmpRand];
randSave[tmpRand] = tmpVar;
}

[/Quote]
sayume 2009-04-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liliangbao 的回复:]
C/C++ code#include <iostream>
#include <string>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
using namespace std;

int main(int argc, char *argv[])
{
int n;
srand(time(0));

for(int i = 0;i < 10;i++)
{
n = rand() % 11; //生成0~10的随机数
cout<<n<<endl;
}

system("PAUSE");
return 0;
}
[/Quote]

这是均匀随机数的标准写法,当然还有可重复随机数组的,例如平方取中法,大数小数法等。
然后其他各种分布随机数都是在均匀随机数的基础上用数学方法产生的。
na2650945 2009-04-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lijingjie1985718 的回复:]
错了错了。随机数要先种种子。哈哈
[/Quote]
正解。
  • 打赏
  • 举报
回复
设个时钟
然后用rand()函数
lq651659889 2009-04-29
  • 打赏
  • 举报
回复
都说完了楼上。
lingyin55 2009-04-29
  • 打赏
  • 举报
回复
要求:每次运行状态所输出的数都不同
简单点的,还有别忘了写上注释!


洗牌算法,写了个,另外也可以用其它思路,比如随机生成一个然后保存到数组,下次生成的时候就和数组中的
对比,看看是不是已经生成过的。



int main()
{
int tmpRand = 0;
int tmpVar = 0;
int randSave[100];//这个数组存放100不同的随机数0~99,使用的时候依次取出即可
for( int i = 0; i < 100; i++ )
randSave[i] = i;

for( int i = 0; i < 100; i++ )
{
tmpRand = rand() % i; //
tmpVar = randSave[i];
randSave[i] = randSave[tmpRand];
randSave[tmpRand] = tmpVar;
}

return 0;

}




[Quote=引用楼主 qq25539088 的帖子:]
要求:每次运行状态所输出的数都不同
简单点的,还有别忘了写上注释!
[/Quote]
  • 打赏
  • 举报
回复
srand(time(NULL));
int i=rand();
lpf000 2009-04-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liliangbao 的回复:]
C/C++ code#include <iostream>
#include <string>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
using namespace std;

int main(int argc, char *argv[])
{
int n;
srand(time(0)); //利用时间变化产生随机种子,先要用这个 才能rand()产生随机数

for(int i = 0;i < 10;i++)
{
n = rand() % 11; //生成0~10的随机数,(rand()随即产生多位数)
cout<<n<<endl;
}

system("PAUSE");
return 0;
}
[/Quote]
lijingjie1985718 2009-04-29
  • 打赏
  • 举报
回复
错了错了。随机数要先种种子。哈哈
lpf000 2009-04-29
  • 打赏
  • 举报
回复
C++继承C的 随即函数
mengde007 2009-04-29
  • 打赏
  • 举报
回复
就是rand()函数;如楼上;
liliangbao 2009-04-29
  • 打赏
  • 举报
回复
#include <iostream>
#include <string>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
using namespace std;

int main(int argc, char *argv[])
{
int n;
srand(time(0));

for(int i = 0;i < 10;i++)
{
n = rand() % 11; //生成0~10的随机数
cout<<n<<endl;
}

system("PAUSE");
return 0;
}

65,211

社区成员

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

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