(转)随机数生成工具

简介: 这篇是师兄的一篇杰作,特意转过来,因为以后也要用到,到时候就没必要自己去写了。实为偷懒,但也是为了能够更快的解决问题。原文:     http://hi.baidu.com/davy_hwang/item/6c14bfd0a736823149e1dd57    1 #pragma once ...

这篇是师兄的一篇杰作,特意转过来,因为以后也要用到,到时候就没必要自己去写了。实为偷懒,但也是为了能够更快的解决问题。原文:     http://hi.baidu.com/davy_hwang/item/6c14bfd0a736823149e1dd57   

 1 #pragma once
 2 #include <ctime>
 3 const unsigned long maxshort = 65535L;
 4 const unsigned long multiplier = 1194211693L;
 5 const unsigned long adder = 12345L;
 6 class RandomNumber{
 7 private:
 8  // 当前种子
 9  unsigned long randSeed;
10 public:
11  // 构造函数,默认值0表示由系统自动产生种子
12  RandomNumber(unsigned long s = 0);
13  // 产生0 ~ n-1之间的随机整数
14  unsigned int Random(unsigned long n);
15  // 产生[0, 1) 之间的随机实数
16  double fRandom();
17 };
18 // 产生种子
19 RandomNumber::RandomNumber(unsigned long s)
20 {
21  if(s == 0)
22   randSeed = (unsigned long)time(0);    //用系统时间产生种子
23  else
24   randSeed = s;
25 }
26 // 产生0 ~ n-1 之间的随机整数
27 unsigned int RandomNumber::Random(unsigned long n)
28 {
29  randSeed = multiplier * randSeed + adder;
30  return (unsigned int)((randSeed) % n);
31 }
32 // 产生[0, 1)之间的随机实数
33 double RandomNumber::fRandom()
34 {
35  return Random(maxshort) / double(maxshort);
36 }
37  
38 //  --------------------------------------- test:
39 #include <iostream>
40 #include "Rdm.h"
41 #include <fstream>
42 using namespace std;
43 int main()
44 {
45  ofstream ofRet("Nodes.tr");
46  RandomNumber obj;
47  int Loc_x = 0;
48  int Loc_y = 0;
49  for ( int i = 0; i < 100; i++ )
50  {
51   Loc_x = obj.Random(600);
52   Loc_y = obj.Random(600);
53   ofRet << "-MN\t" << i << "\t-X\t" << Loc_x << "\t-Y\t" << Loc_y << endl;
54  }
55  return 0;
56 }

将结果输入到matlAB可以得到如下的随机分布图,是不是很nice。nice归nice,过程还要自己去走一遍。

目录
相关文章
|
10月前
|
算法 安全 量子技术
【Python】蒙特卡洛模拟 | PRNG 伪随机数发生器 | 马特赛特旋转算法 | LCG 线性同余算法 | Python Random 模块
【Python】蒙特卡洛模拟 | PRNG 伪随机数发生器 | 马特赛特旋转算法 | LCG 线性同余算法 | Python Random 模块
274 0
|
3月前
|
Python
python之数值计算、math库、随机数
python之数值计算、math库、随机数
|
4月前
|
算法
LabVIEW伪随机数生成器
LabVIEW伪随机数生成器
37 0
|
4月前
|
算法 数据处理 数据安全/隐私保护
深入NumPy的随机数生成机制
【4月更文挑战第17天】本文探讨了NumPy的随机数生成机制,强调了伪随机数在科学计算中的重要性。NumPy提供了多种生成器,如`RandomState`(基于Mersenne Twister)、`Generator`(灵活且强大)和`default_rng`(推荐,基于PCG64)。生成随机数涉及初始化生成器、设置种子和调用相关方法。关注生成器的质量和性能,遵循最佳实践,如避免硬编码种子、使用最新NumPy版本以及选择合适的生成器和分布,能有效提升数据处理效率和准确性。
|
4月前
|
资源调度 Python
|
4月前
|
机器学习/深度学习 Python
NumPy 中级教程——随机数生成
NumPy 中级教程——随机数生成
86 1
|
11月前
|
算法 安全 数据安全/隐私保护
高效的随机数生成算法
在计算机科学和统计学中,随机数生成是一个重要的问题。随机数在许多领域广泛应用,包括密码学、模拟、游戏开发等。然而,生成高质量的随机数并不是一件容易的事情。本文将介绍一种高效的随机数生成算法——**梅森旋转算法(Mersenne Twister)**。
221 1
|
Java
如何使用Java实现随机数生成器
在Java编程中,需要生成随机数的情况非常常见。本文将介绍如何使用Java中提供的相关类和方法来实现随机数生成器。
88 1
|
数据挖掘 Python
Python基础 | 你想要的随机数生成都在这里
Python基础 | 你想要的随机数生成都在这里
73 0
|
编解码 安全 算法
随机数探秘|如果python不用random怎样生成随机数?
随机数探秘|如果python不用random怎样生成随机数?
494 0