CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  非技术区

请问如何生成随机数?

楼主scutlight(临风)2003-11-04 18:45:05 在 C/C++ / 非技术区 提问

在书上看到这样一段话:  
           
          用线性同余法生成随机数序列的公式为:  
                                Rk   =   (multiplier   *   Rk-1   +   increment)   %   modulus  
  序列中的每一个数Rk,可以由它的前一个数Rk-1,计算出来。例如,如果有:  
                                Rk   =   (25173   *   Rk-1   +   13849)   %   65536  
  可以产生65536个各不相同的整形随机数。请设计一个函数作随机数生成器,生成一位或两位数的随机数。  
   
  ========================================================================  
   
  关于这段话,小弟愚昧,实在不懂,请哪位GGJJ赐教一下。   最好能给在下举个例子吧,小弟在此先行谢过! 问题点数:0、回复次数:8Top

1 楼plainsong(短歌)()回复于 2003-11-04 18:56:55 得分 0

不带格式的文字表示数列时很不方便。  
   
  R[k]   =   (25173   *   R[k-1]   +   13849)   %   65536  
   
  写成Random函数就是:  
  int   rand_seed  
  int   random()  
  {  
      (rand_seed   *   25173   +   13849)   %   65536;  
      return   rand_seed;  
  }Top

2 楼scutlight(临风)回复于 2003-11-04 19:45:41 得分 0

还是不明白:(  
  rand_seed是全局变量吧,那它不是自动赋值为0吗?  
  random的返回值也就为0呀  
   
  Top

3 楼plainsong(短歌)()回复于 2003-11-04 19:47:30 得分 0

对不起,写错了。  
  int   rand_seed  
  int   random()  
  {  
      rand_seed   =   (rand_seed   *   25173   +   13849)   %   65536;  
      return   rand_seed;  
  }Top

4 楼scutlight(临风)回复于 2003-11-04 19:56:40 得分 0

我想知道生成了哪些随机数,代码如下:  
  #include   <iostream.h>  
   
  int   rand_seed;  
  int   random()  
  {  
      rand_seed   =   (rand_seed   *   25173   +   13849)   %   65536;  
      return   rand_seed;  
  }  
   
  void   main()  
  {  
  cout<<random;  
  }  
   
  =====================================================  
  但运行结果为:  
  0x00401005  
   
  这并不是我想要的,也许是我太笨了,请你说详细一点好么?Top

5 楼thmoftherain(小风)回复于 2003-11-04 20:00:36 得分 0

int   rand_seed;  
  int   random(int   y)  
  {  
      return   (y   *   25173   +   13849)   %   65536;  
  }Top

6 楼thmoftherain(小风)回复于 2003-11-04 20:04:09 得分 0

#include   <iostream.h>  
  main()  
  {  
          int   y   =   rand_seed;  
          do{  
                  y   =   random(y);  
          }while(y!=rand_seed);  
          return   0;  
  }  
  Top

7 楼scutlight(临风)回复于 2003-11-04 20:07:02 得分 0

回复人:   thmoftherain(小风)   (   )   信誉:100     2003-11-04   20:00:00     得分:0    
     
     
  int   rand_seed;  
  int   random(int   y)  
  {  
      return   (y   *   25173   +   13849)   %   65536;  
  }  
       
  =========================================================================  
  int   rand_seed;在你这里有什么意义?Top

8 楼thmoftherain(小风)回复于 2003-11-04 20:24:38 得分 0

rand_seed   作为产生随机数的种子,又他开始计算出一个好像相对无关的数,这个数又作为下一个“随机数”的种子,这里由于随机数的算法可以产生65536个各不相同的整形随机数,所以rand_seed  
  的初值随意,经过65536次运算又得到该值,若每次rand_seed得值不变的话,每次运算得到的都是一样的随机数序列Top

相关问题

  • 如何生成随机数?
  • 如何生成随机数?
  • 请教如何生成随机数
  • 生成随机数
  • 如何写一个生成随机数的函数?
  • 如何生成不重复的随机数
  • 如何生成决不重复的随机数?(c#语言)
  • 用VB如何生成随机数的序列?
  • 如何生成随机数(高分请求)
  • 如何生成不重复的随机数?有点难度

关键词

  • 随机数
  • rand
  • seed
  • rk
  • 生成
  • random
  • 序列
  • 产生
  • 话

得分解答快速导航

  • 帖主:scutlight

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo