一个做游戏软件的人,要做一个随机数函数用,抛出这样一个概念来。一群热爱做游戏的人,在那里讨论,…
  
  平方取中法(midsquare method)是产生[0,1]均匀分布随机数的方法之一,亦称冯·诺伊曼取中法,最早由冯·诺伊曼(John von Neumann,1903-1957)提出的一种产生均匀伪随机数的方法。此法将一个2s位十进制随机数平方后得到的一个4s位数,去头截尾取中间2s位数作为一个新的随机数,重复上述过程可得到一个伪随机数列。
  平方取中法是冯·诺依曼提出的。此法开始取一个2s位的整数,称为种子,将其平方,得4s位整数(不足4s位时高位补0),然后取此4s位的中间2s位作为下一个种子数,并对此数规范化(即化成小于1的2s位的实数值),即为第一个(0,1)上的随机数。以此类推,即可得到一系列随机数。
  这里给出取s=16比较实用,贴近当今计算机的特征和计算机语言变量类型的特征。用时间对随机函数进行初始化,可以真正达到随机函数的效果。
  需要自己的随机函数的话,这个随机函数比较简单实用。

mm.h代码如下:

#define MM_S16 16unsigned long long mm_val;void mm_srand(unsigned);
unsigned mm_rand();

mm.c代码如下:

#include "mm.h"void mm_srand(unsigned x)
{mm_val = x;
}unsigned mm_rand()
{mm_val *= mm_val;mm_val >>= MM_S16;mm_val &= 0x00000000FFFFFFFFLL;return mm_val;
}

测试主函数main.c代码如下:

/* B00017 平方取中随机数函数 */#include <stdio.h>
#include <time.h>
#include "mm.h"int main()
{int i;time_t t;/* 初始化随机数发生器 */mm_srand((unsigned) time(&t));/* 输出 0 到 99 之间的 10 个随机数 */for( i = 1 ; i <= 10 ; i++ )printf("%d\n", mm_rand() % 100);return 0;
}

平方取中法随机数函数相关推荐

  1. 数据结构—— 构造散列函数的六种方法【直接定址法-数字分析法-平方取中法-折叠法-除留余数法-随机数法】

    目录: 一:直接定址法 二:数字分析法 三:平方取中法 四:折叠法 五:除留余数法 六:随机数法 这些方法原理都是将原来数字按某种规律变成另一个数字 一:直接定址法 取关键字的某个线性函数值作为散列地 ...

  2. 使用散列表进行查找【查找关键词:电话号码,名称】【平方取中法,除留余数法】【开放地址探测法,公共溢出区法】【计算ASL】

    Library import pandas as pd import numpy as np import time 读取数据 df = pd.read_excel('重庆市印刷和记录媒介复制业754 ...

  3. 乘积取中法matlab,迭代取中法、乘同余法及混合同余法产生随机数方法

    在用计算机编制程序时,经常需要用到随机数,尤其在仿真等领域,更对随机数的产生提出了较高的要求,仅仅使用 C 语言类库中的随机函数已难以胜任相应的工作.现实中,用投色子计数的方法产生真正的随机数,但电脑 ...

  4. 乘积取中法matlab,Matlab常用算法集合

    [实例简介] 包括了全书所有实例对应的MATLAB的M文件.所有代码按照章节存放在各个文件夹下,如"第4章插值"文件夹下存放了本书第4章所有的算法程序代码,对于算法的程序代码,在光 ...

  5. c++ 快排优化(三数取中法)

    快排优化(三数取中法) 文章目录 快排优化(三数取中法) 前言 一.三数取中法 二.递归思想 三.程序实现过程(代码) 1.取基准数(三数取中) 2.快速排序(递归) 总结 前言 作为刚刚入门c和c+ ...

  6. c分布 的程序设计语言,#2020学习打卡##C程序设计语言# C语言中的随机数函数解析...

    在计算机中并没有一个真正的随机数发生器,但是可以做到使产生的数字重复率很低,这样看起来好象是真正的随机数,实现这一功能的程序叫伪随机数发生器. 有关如何产生随机数的理论有许多,如果要详细地讨论,需要厚 ...

  7. C++中的随机数函数(

    标签:ul 随机数 c 整数 max 教育  C++中产生随机数种子对于初学者一直都很困惑.大家知道,在C中有专门的srand(N)函数可以轻松实现这一功能,然而在C++中则要复杂一些.下面是笔者学习 ...

  8. numpy中的随机数函数详解

    作者学习中积累总结内容,转载请注明 np.random.* numpy随机数 一.生成器 二.简单随机数 三.分布随机数 四.排列 shuffle() permutation() choice() n ...

  9. 乘积取中法matlab,遺傳算法(GA)的matlab實現

    一.TASK compute the maximum value: 二.實現過程 1.     編碼與解碼 編碼: 在編碼之前需要確定求解的精度,設定求解的精度為小數點后六位,即10^6.這樣可以將每 ...

最新文章

  1. 解题报告:POJ 3281 Dining(最大流 / “三分图”建图)
  2. C语言--static全局使用示例
  3. html设置box设置长度自适应,CSS实现宽度自适应宽高16:9的矩形的示例
  4. python 如何中断程序、停止程序、退出程序?sys.exit()、os._exit()、os.kill()
  5. 1.有意义的命名(代码的整洁之道)
  6. python语句join_Python中的join()函数的用法
  7. 空军军医大学计算机复试线,空军军医大学2019年考研复试分数线
  8. php mysqliquery 返回值,PHP mysqli_multi_query() 函数_程序员人生
  9. missfresh问题记录
  10. 技能高考多少分上本科计算机,技能高考多少分上一本
  11. c语言ie编程,IEC语言:梯形图(共章).ppt
  12. 【android自定义控件】自定义Toast,AlterDialog,Notification 四
  13. 无线通信中的IQ调制,BPSK调制,QPSK调制,16QAM调制的理解
  14. android 下载apk 安装程序,Android实现APK下载安装
  15. 人体颈椎神经分布图高清,颈椎部神经分布图高清
  16. 求问解决方法,感激不尽
  17. 2020 数据科学平台领域最具商业合作价值企业盘点
  18. 设计模式(二)简单工厂模式
  19. 目前计算机病毒只有网络病毒吗,目前计算机病毒只有网络型病毒。()
  20. 学习太极创客 — MQTT 第二章(一)QoS 服务质量等级

热门文章

  1. 2018-09-25 参考博客Hadoop
  2. “订阅”与“反向订阅”--简书功能设计探索
  3. ArcObjects操作PageLayoutControl中元素位置,以图框、ITextSymbol为例
  4. Intellij Idea打包jar
  5. Unity推出2D工具:不再只是3D引擎
  6. JavaScript事件触发列表与解说
  7. C#图片处理之: 获取数码相片的EXIF信息(二)
  8. c语言中转义字符efg,c语言的转义字符与空白符
  9. python键_Python键盘按键模拟
  10. db2 控制台执行创建函数语句_DB2 从命令行创建SQL存储过程