学习C++笔记183

简介: C++ 数字

window下的RAND_MAX为:0x7fff=2^15-1=32767

linxu下的RAND_MAX为:2^31-1=2147483647

不妨,就Windows下进行说明:

Rand函数返回返回值是0到RAND_MAX(32767) 范围内的一个(伪)随机整数。

取指定区间的(伪)随机数不建议采用“模除+加法”的方式,

譬如:如果采用此法去0-10000内的随机数,则写法为

srand((unsigned)time( NULL ));

int n = rand()%10000;

则0-2767之间每个数出现的概率为4/32676,而2768-9999之间的书出现的概率为3/32676,和前者是不同的。不过rand()产生的是伪随机数了这个无关紧要,哈哈哈 。

建议采用如下方式:

int u =(double)rand()/(RAND_MAX +1)*(range_max - range_min)+ range_min

一下是VS开发文档示例:

// crt_rand.c

// This program seeds the random-number generator

// with the time, then exercises the rand function.

//


#include

#include

#include


voidSimpleRandDemo(int n )

{

  // Print n random numbers.

  int i;

  for( i =0; i < n; i++)

     printf("  %6d\n", rand());

}


voidRangedRandDemo(int range_min,int range_max,int n )

{

  // Generate random numbers in the half-closed interval

  // [range_min, range_max). In other words,

  // range_min <= random number < range_max

  int i;

  for( i =0; i < n; i++)

  {

     int u =(double)rand()/(RAND_MAX +1)*(range_max - range_min)

           + range_min;

     printf("  %6d\n", u);

  }

}


int main(void)

{

  // Seed the random-number generator with the current time so that

  // the numbers will be different every time we run.

  srand((unsigned)time( NULL ));


  SimpleRandDemo(10);

  printf("\n");

  RangedRandDemo(-100,100,10);

}

/***********************************分割线*****************************************/

建议使用random库生成真随机数,如下:

#include

#include


usingnamespace std;


int main()

{

   random_device rd;   // non-deterministic generator

   mt19937 gen(rd());  // to seed mersenne twister.

   uniform_int_distribution<> dist(1,6);// distribute results between 1 and 6 inclusive.


   for(int i =0; i <5;++i){

       cout << dist(gen)<<" ";// pass the generator to the distribution.

   }

   cout << endl;

}

输出如下:

51612

目录
相关文章
|
4天前
|
存储 编译器 C语言
c++的学习之路:5、类和对象(1)
c++的学习之路:5、类和对象(1)
19 0
|
18天前
|
存储 C++ 容器
C++STL(标准模板库)处理学习应用案例
【4月更文挑战第8天】使用C++ STL,通过`std:vector`存储整数数组 `{5, 3, 1, 4, 2}`,然后利用`std::sort`进行排序,输出排序后序列:`std:vector<int> numbers; numbers = {5, 3, 1, 4, 2}; std:sort(numbers.begin(), numbers.end()); for (int number : numbers) { std::cout << number << " "; }`
19 2
|
28天前
|
存储 编译器 C语言
C++入门: 类和对象笔记总结(上)
C++入门: 类和对象笔记总结(上)
34 0
|
29天前
|
存储 安全 编译器
C++学习过程中的一些值得注意的小点(1)
C++学习过程中的一些值得注意的小点(1)
|
29天前
|
存储 算法 数据库
【C++ 软件设计思路】学习C++中如何生成唯一标识符:从UUID到自定义规则
【C++ 软件设计思路】学习C++中如何生成唯一标识符:从UUID到自定义规则
106 0
|
4天前
|
C++
c++的学习之路:7、类和对象(3)
c++的学习之路:7、类和对象(3)
19 0
|
4天前
|
C语言 C++
c++的学习之路:4、入门(3)
c++的学习之路:4、入门(3)
18 0
|
4天前
|
编译器 C++
c++的学习之路:23、多态(2)
c++的学习之路:23、多态(2)
17 0
|
18天前
|
程序员 C++
C++语言模板学习应用案例
C++模板实现通用代码,以适应多种数据类型。示例展示了一个计算两数之和的模板函数`add&lt;T&gt;`,可处理整数和浮点数。在`main`函数中,展示了对`add`模板的调用,分别计算整数和浮点数的和,输出结果。
12 2
|
30天前
|
算法 安全 编译器
【C++ 17 新特性 折叠表达式 fold expressions】理解学习 C++ 17 折叠表达式 的用法
【C++ 17 新特性 折叠表达式 fold expressions】理解学习 C++ 17 折叠表达式 的用法
23 1