关于随机函数的编写

njyxq 2003-10-20 09:35:16
要求:
不允许使用系统时间,写出一个随机生成函数.
请问怎么写啊?
...全文
97 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZhangYv 2003-10-20
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2091/2091322.xml?temp=.308346
knight0637 2003-10-20
  • 打赏
  • 举报
回复
//RandomNumber.H---Class of random number

#if !defined _RandomNumber_H
#define _RandomNumber_H

const unsigned long maxshort=65536L;
const unsigned long multiplier=1194211693L;
const unsigned long adder=12345L;

class RandomNumber{
private:
//当前种子
unsigned long RandSeed;
public:
//构造函数,缺省值0表示由系统自动产生种子
RandomNumber(unsigned long s=0);
//产生[0,n-1]之间的随机整数
unsigned short iRandom(unsigned long n);
//产生[0,1)之间的随机小数
double fRandom(void);
};
#endif


//RandomNumber.cpp
#include"time.h"
#include"RandomNumber.h"

//产生种子
RandomNumber::RandomNumber(unsigned long s){
if(s==0)
RandSeed=time(0); //系统时间提供种子
else
RandSeed=s; //用户提供种子
}

//产生[0,n-1]之间的随机整数
unsigned short RandomNumber::iRandom(unsigned long n){
RandSeed=multiplier*RandSeed+adder;
return (unsigned short)((RandSeed>>16)%n);
}

//产生[0,1)之间的随机小数
double RandomNumber::fRandom(void){
return iRandom(maxshort)/(double)(maxshort);
}
以上的程序是我在做算法的设计分析作业时写的,可用系统时间或用户的输入做种子(seed),产生的随机序列还不错。
你也可以参考任何一本算法设计与分析教材,一般都有所介绍。
njyxq 2003-10-20
  • 打赏
  • 举报
回复
不清楚,如果不用怎么做?
CountFloyd 2003-10-20
  • 打赏
  • 举报
回复
用不用RAND、RANDOM
killua1213 2003-10-20
  • 打赏
  • 举报
回复
用随机函数啊
random(n)产生的是0到n-1之间的一个随机数,得用#include<stdlib.h>头文件。
njyxq 2003-10-20
  • 打赏
  • 举报
回复
用c怎么作?

69,335

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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