精华内容
下载资源
问答
  • c++产生指定范围随机数

    千次阅读 2019-07-07 16:03:17
    #include <ctime> int ToolRandInt(int min, int max) { srand((unsigned)time(NULL)); int r = rand() % (max - min + 1) + min; return r; }

    #include <ctime>

    int ToolRandInt(int min, int max)
    {
    	srand((unsigned)time(NULL));
    	int r = rand() % (max - min + 1) + min;
    	return r;
    }
    

     

    展开全文
  • 需求:比如生成min到max区域内的随机数 需要用到的库 #include <stdio.h> #include <tchar.h> #include <iostream> #include <time.h> 实现的方法封装 //@brief:产生[min_val,max_val]...
    • 需求:比如生成min到max区域内的随机数
    • 需要用到的库
    #include <stdio.h>
    #include <tchar.h>
    #include <iostream>
    #include <time.h> 
    
    • 实现的方法封装
    //@brief:产生[min_val,max_val]范围内的随机数
    //@param:min_val:最小值
    //@param:max_val:最大值
    //@return:生成的随机数
    int randNum(int min_val,int max_val)
    {
    	//判断前检查 min_val 和 max_val的值大小对比
    	if (min_val > max_val)
    	{
    		cout << "不符合要求,min_val必须小等于max_val的值。" << endl;
    		return 0;
    	}
    	//
    		int num_val = rand()%(max_val-min_val+1) + min_val;
    		return num_val;
    }
    
    • 备注:需要先调用srand((unsigned int)(time(NULL)));

    • 原因:因为C++本质上是没有随机数功能,这是为了根据时间生成随机值,保证随机性

    • 实例测试

    // RandomNum.cpp : 定义控制台应用程序的入口点。
    //需求:明明的随机数
    
    #include "stdafx.h"
    
    using namespace std;
    
    //@brief:产生[min_val,max_val]范围内的随机数
    //@param:min_val:最小值
    //@param:max_val:最大值
    //@return:生成的随机数
    int randNum(int min_val,int max_val)
    {
    	//判断前检查 min_val 和 max_val的值大小对比
    	if (min_val > max_val)
    	{
    		cout << "不符合要求,min_val必须小等于max_val的值。" << endl;
    		return 0;
    	}
    	//
    		int num_val = rand()%(max_val-min_val+1) + min_val;
    		return num_val;
    }
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	srand((unsigned int)(time(NULL))); //根据时间种子产生无规律的随机数
    	int i = 0;
    	//测试
    	for (;i < 10 ; i++)
    	{
    		int num = randNum(1,100);
    		cout << "生成随机数" << num << endl;
    	}
    	//cout << rand() << endl;
    	system("pause");
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述

    展开全文
  • c++生成指定范围内的随机数 /* 函数名称: RandGenerator 随机数发生器 参数: dwRandMaxVal 随机数最大值 dwRandMinVal 随机数最小值 dwRandCount 随机数个数 mRandValue 随机数结果 itor->first 保存的...

    c++生成指定范围内的随机数

    /*
    函数名称:
    	RandGenerator 随机数发生器
    参数:
    	dwRandMaxVal 随机数最大值
    	dwRandMinVal 随机数最小值
    	dwRandCount  随机数个数
    	mRandValue   随机数结果
    	 itor->first 保存的随机数 
    	 itor->second 保留没有
    返回值:
    	return -1 参数错误
    	return dwRandCount 随机数个数
    */
    int RandGenerator(DWORD dwRandMaxVal, DWORD dwRandMinVal, DWORD dwRandCount, std::map<DWORD, DWORD> &mRandValue)
    {
    	assert(dwRandMaxVal >=0 && dwRandMinVal >= 0 && dwRandCount>=0 && (dwRandMaxVal - dwRandMinVal >= dwRandCount - 1));
    	if (dwRandMaxVal <0 || dwRandMinVal < 0 || dwRandCount<0 || (dwRandMaxVal - dwRandMinVal < dwRandCount - 1)) return -1;
    	/*
    		数据类型LARGEINTEGER既可以是一个作为8字节长的整数,也可以是作为两个4字节长的整数的联合结构,其具体用法根据编译器是否支持64位而定
    
    		在定时前应该先调用QueryPerformanceFrequency()函数获得机器内部计时器的时钟频率。
    		接着在需要严格计时的事件发生前和发生之后分别调用QueryPerformanceCounter(),
    		利用两次获得的计数之差和时钟频率,就可以计算出事件经历的精确时间
    	*/
    	LARGE_INTEGER seed;
    	QueryPerformanceFrequency(&seed);
    	QueryPerformanceCounter(&seed);
    	srand(seed.QuadPart);			  //初始化一个以微秒为单位的时间种子
    	//srand((unsigned int)time(NULL));//初始化一个以秒为单位的时间种子
    	while (mRandValue.size() < dwRandCount)
    	{
    		DWORD temp = rand() % (dwRandMaxVal - dwRandMinVal + 1) + dwRandMinVal;
    		if (mRandValue.find(temp) != mRandValue.end())continue;
    		mRandValue.insert(std::pair<DWORD, DWORD>(temp, 1));
    	}
    
    	return dwRandCount;
    }
    
    展开全文
  • 这种方法比较传统,缺点是随机性不够好,而且不能自己选择生成随机数范围。 以及如果你短时间内多次调用 srand(NULL) ,生成随机数是相同的: c - srand(time(NULL)) doesn’t change seed value quick ...

    第一种是传统的方法:

    #include <iostream>
    
    using namespace std;
    
    int main() {
        srand(NULL);
        for (int i = 0; i < 100; i++) {
            cout << rand() << ' ';
        }
        return 0;
    }
    

    这种方法比较传统,缺点是随机性不够好,而且不能自己选择生成的随机数的范围。
    以及如果你短时间内多次调用srand(NULL),生成的随机数是相同的:c - srand(time(NULL)) doesn’t change seed value quick enough - Stack Overflow


    新的C++11的做法如下:

    #include <iostream>
    #include <random>
    
    int main() {
        std::random_device rd;     //Get a random seed from the OS entropy device, or whatever
        std::mt19937_64 eng(rd()); //Use the 64-bit Mersenne Twister 19937 generator
                                    //and seed it with entropy.
    
        //Define the distribution, by default it goes from 0 to MAX(unsigned long long)
        //or what have you.
        std::uniform_int_distribution<unsigned long long> distr;
    
        //Generate random numbers
        for (int n = 0; n < 40; n++){
            std::cout << distr(eng) << ' ';
        }
        std::cout << std::endl;
    }
    

    比如说你想生成1-6的随机数,做法如下:

    #include <random>
    #include <iostream>
    
    int main() {
        std::random_device rd;     //Get a random seed from the OS entropy device, or whatever
        std::mt19937_64 eng(rd()); //Use the 64-bit Mersenne Twister 19937 generator
        //and seed it with entropy.
    
        //Define the distribution, by default it goes from 0 to MAX(unsigned long long)
        //or what have you.
        std::uniform_int_distribution<unsigned long long> distr(1, 6);// distribution in range [1, 6]
    
        //Generate random numbers
        for (int n = 0; n < 40; n++) {
            std::cout << distr(eng) << ' ';
        }
        std::cout << std::endl;
    }
    

    参考:c++ - Generating random integer from a range - Stack Overflow

    展开全文
  • #include<iostream> #include<cstdlib>//对应于C中stdlib.h #include<ctime>//time.h ...//生成0到100内的随机数 int rnum=rand()%(high-low+1)+low;//划重点,记住 printf("random
  • C++11 生成指定范围内的随机数

    千次阅读 2016-04-19 15:56:45
    C++11中使用了一些名字有些难记的一系列函数来生成一个指定范围随机数,不像C中那样简洁和直观。不过,为了使用标准C++11语法,尽可能抛弃C子集的函数,还是很有必要学习的。当然,主要还是今天开会,大家都在说要...
  • 2.一般随机数生成 常使用函数rand()产生随机数,但是随机数值的范围在0至RAND_MAX 间,RAND_MAX与使用数据类型有关。 int randNum = 10; for (int i = 0; i < randNum; i++) { cout <<...
  • 3就是范围,代表生成[0,3)之间的随机数 int main(){ for (int i = 0; i < 20; i++) { switch (rand() % 3) { case 0: std::cout << "00" << std::endl; case 1: std::cout <<
  • C++生成一个随机数

    千次阅读 2020-10-11 20:39:39
    C++生成一个随机数 文章目录用C++生成一个随机数C++语言生成随机数的办法通用公式 :例 (例中的随机数生成公式为通用公式) C++语言生成随机数的办法 1.使用rand()函数返回从[0,MAX)之见的随机整数,这里的MAX由所...
  • c 生成指定范围随机数

    万次阅读 多人点赞 2018-03-23 18:42:28
    不过,由于rand()的内部实现是用线性同余法做的,所以生成的并不是真正的随机数,而是在一定范围内可看为随机的伪随机数。 rand: rand()会返回一个0至RAND_MAX之间的随机数值,RAND_MAX的值与int位数有关,最小...
  • C/C++编程产生指定范围内的随机数,直接上个小程序: #include #include #include #include #include /* * 获取随机数 * return : 随机数 */ int commonGetRandNumber(const int low, const int high) { ...
  • 关于随机数生成器,有两个相关的函数。一个是 rand(),该函数只返回一个伪随机数。生成随机数之前必须先调用 srand() 函数。 srand()需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子后面的rand()...
  • 该压缩包包含一个完整的动态生成随机数的工程,可以生成指定范围内的随机数据。
  • c++随机数生成代码

    2014-02-24 18:36:13
    既可以在不指定范围产生随机数 也可以在指定范围产生随机数,产生0到某个数的随机数
  • C/C++ 生成随机数

    万次阅读 多人点赞 2017-07-17 11:02:16
    C/C++生成随机数需要用到两个函数:rand()函数和srand()函数,C/C++中没有生成在一定范围内的随机数的内置函数,不过我们可以利用前边的两个函数来实现生成在一定范围内的随机数。 1、rand()函数 该函数是一个...
  • C++ 随机生成区间范围内的随机数

    万次阅读 多人点赞 2019-05-09 18:25:32
    要取得[a,b)的随机整数,使用(rand() % (b-a))+ a; 要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;...其中的a是起始值,n是整数的范围。 要取得a到b之间的随机整数,另一种表示:a + (int)b * rand() /...
  • C++产生指定范围随机数

    千次阅读 2019-03-22 09:55:36
    转载于:... C/C++编程产生指定范围内的随机数,直接上个小程序: #include <stdlib.h> // 对应于C++中cstdlib#include <time.h> // ctime#include <stdio.h> int ma...
  • C++在一定范围生成不重复随机数序列

    万次阅读 多人点赞 2017-05-03 12:48:53
    最近在写内存调度算法的时候需要随机产生内存也调用序列,想写一个不重复的随机数产生序列,一开始想了个很简单的实现方法先生用循环生成想要随机数的数组,然后通随机产生下标来选择随机数,每生成一个随机数就删除...
  • 但是如果直接调用rand()函数会发现每次返回的随机数是一样,这是因为没有指定随机数种子,通过srand()函数可以设置随机数种子,通常通过系统时钟来指定 // 产生指定范围的随机数[minValue,maxValue] float _myRand...
  • c++如何生成随机数

    2021-08-10 13:24:41
    (1) 如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间。RAND_MAX定义在stdlib.h, 其值为2147483647。 (2) 如果你要随机生成一个在一定范围的数...
  • 转自:https://www.pinlue.com/article/2019/03/2509/308393416427.html
  • C++新标准,有一个叫随机数引擎的东西。 包含于头文件 &lt;random&gt; 随机数库由:引擎,分布组成。具体可参考《C++ primer》 #include&lt;random&gt; #include&lt;iostream&gt; using ...
  • #include <iostream> #include <vector> #include <stdlib.h> #include <time.h> using namespace std; int main() { std::vector<... //srand用来指定不同的数为...
  • 语言用的是C++ ; 开发工具用的是DEV-C; 可指定随机数范围生成个数; 算法很简单,是一个实用的小工具
  • C++】产生指定范围随机数

    千次阅读 2017-10-10 14:59:46
    写程序的过程中用到了随机生成指定范围和格式的随机数,记录在这里,以后可以直接用。T randT(T Lower, T Upper) template { T temp; if (Lower > Upper) { temp = Upper; Upper = Lower; Lower = temp;
  • C++随机数生成

    万次阅读 多人点赞 2019-01-22 12:31:50
    一般要用到两个头文件 随机整数数 #include&amp;amp;amp;amp;lt;...首先生成一个0-rand_max的随机数: #include&amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;gt; #include&amp
  • 在C语言中随机数的使用,生成由a到b范围随机数方法。
  • 生成1~6之间的随机数 #include <stdio.h> #include <stdlib.h> #include <time.h> #include <iostream> using namespace std; int main() { int i,result; srand((int)time(0));//利用...
  • C++怎样产生任意指定范围随机数

    千次阅读 2017-07-18 18:54:26
    srand(time(NULL)); 之后调用rand()即可得到0 ~ 32757范围随机数 包含头文件stdlib.h和time.h 或 cstdlib和ctime ...用下列公式即可得到指定范围[m,n]的随机数: r = rand()%(n - m + 1) + m; 注意:n - m 的
  • c++生成随机数

    千次阅读 2015-09-18 16:57:59
    获取均匀分布的随机数经典方法 获取任意分布的随机数

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,197
精华内容 5,278
关键字:

c++生成指定范围随机数

c++ 订阅