首页 > 其他分享 >C标准库中srand()和rand()关于随机数的记录

C标准库中srand()和rand()关于随机数的记录

时间:2023-06-02 22:56:07浏览次数:36  
标签:rand 函数 srand TRY seed 随机 库中

首先需要说明,C标准库可以在C++中使用。srand()和rand()均来源于<cstdlib>中。因为这两个函数只能生成相对随机的伪随机数(有规律的随机数),这种不能直接实现“绝对随机”的函数一开始会给大家带来一些疑惑。下面记录了一些关于srand()和rand()的使用方法,以及如何实现伪随机数的“绝对随机”。

一、srand()和rand()函数

1、srand()

void srand(unsigned seed);

srand(seed)函数是rand()函数的种子,用于初始化rand()函数的初始值。

2、rand()

int rand(void); // 指定从seed开始,返回一个[seed, RAND_MAX(0x7fff)]的随机整数

情况1

调用rand()函数时,若没有在之前调用srand(seed)函数,系统会自动将seed默认为1,执行srand(1)函数,从而返回一个[1, RAND_MAX(0x7fff)]的随机整数。

情况2

调用rand()函数时,若在之前调用了srand(seed)函数,则会返回一个[seed, RAND_MAX(0x7fff)]的随机整数。

二、经典案例

在[0, 6)区间随机取得一个整数

1、未使用srand(unsigned seed)函数指定seed值

const int cnt = 6;
for(int i=0; i<10; i++)
{
	cout << "TRY_" << i+1 << ": " << rand() % cnt << endl;
}
TRY_1: 1
TRY_2: 1
TRY_3: 5
TRY_4: 2
TRY_5: 4
TRY_6: 2
TRY_7: 0
TRY_8: 2
TRY_9: 5
TRY_10: 1

默认seed=1,每次执行,都输出同样的结果。

2、使用了srand(unsigned seed)函数指定seed值

3、

标签:rand,函数,srand,TRY,seed,随机,库中
From: https://www.cnblogs.com/cloucodeforfun/p/17452954.html

相关文章

  • CF1823F Random Walk 树上随机游走
    设\(F_{i}\)为经过点\(i\)时的期望,\(in_{i}\)为点\(i\)度数,我们易得:\(\begin{aligned}F_{t}&=1\\F_{s}&=1+\frac{F_{fa}}{in_{fa}}+\sum_{v\inV_{i}}\frac{F_{v}}{in_{v}}\\F_{u}&=\frac{F_{fa}}{in_{fa}}+\sum_{v\in......
  • Delphi RandomRange() - 返回指定范围内的随机整数
    DelphiRandomRange()-返回指定范围内的随机整数单元:math原型:functionRandomRange(constAFrom,ATo:Integer):Integer;beginifAFrom>ATothenResult:=Random(AFrom-ATo)+AToelseResult:=Random(ATo-AFrom)+AFrom;end;RandomRange......
  • 随机数Random
    packagecom.karl;importjava.util.Random;publicclassRandomDemo{publicstaticvoidmain(String[]args){//创建一个Random对象,用于生成随机数Randomr=newRandom();//调用Random提供的功能:nextInt得到随机数for(inti......
  • Vulnhub靶机DevRandom CTF1.1详细测试过程
    DevRandomCTF:1.1靶机信息名称:DevRandomCTF:1.1地址:https://www.vulnhub.com/entry/devrandom-ctf-11,450/识别目标主机IP地址─(kali㉿kali)-[~/Vulnhub/DevRandom]└─$sudonetdiscover-ieth1-r192.168.56.0/24Currentlyscanning:192.168.56.0/24|S......
  • winfrom中对datagridview控件更新数据并添加到数据库中
    第一种方法:双击鼠标直接修改数据同步到数据库1、首先在app.config配置数据库<?xmlversion="1.0"encoding="utf-8"?><configuration>   <connectionStrings>      <addname="local"         connectionString="DataSource=DESKTOP-H......
  • Atcoder Grand Contest 062 D - Walk Around Neighborhood
    csy/bxwjz/bx首先将\(a\)排序,如果\(\sum\limits_{i=1}^{n-1}a_i<a_n\)显然就是\(-1\),否则必然有解。先发现一个trivial的事情,就是答案一定位于\([\dfrac{a_n}{2},a_n]\)中,这是因为我们判掉无解的条件之后,我们必然可以用前面的步数走到以\((a_n,0),(0,a_n),(-a_n,0),(......
  • 深入理解数据库中的表、用户、表空间和模式的关系
    在数据库管理系统中,如Oracle,对关键概念,包括表、用户、表空间和模式之间的关系应有较深理解。这些概念对于正确管理和保护数据库中的数据至关重要。在本文中,我们将重点整理和澄清这些概念,并解释它们之间的关系。一明确每个概念的含义。表:表是数据库中存储数据的基本结构。它由列和......
  • 「解题报告」XXI Open Cup, Grand Prix of Tokyo
    猜猜为什么四五天没更博了?攒了个大的。非常好OpenCup,10个998244353,爱来自陶瓷❤快写死我了,终于写完了。十道题里只有三道题是自己做出来的。我好废物。CodeforcesGym官方题解A.AscendingMatrix开幕雷击。首先考虑没有限制怎么做。由于优秀的单调性,我们可以对于每......
  • Atcoder Grand Contest 060 D - Same Descent Set
    先推式子。设\(f(S)\)表示decent集合恰好为\(S\)的排列个数,\(g(S)\)表示\(S\)是\(p\)的decent集合的一个子集的排列\(p\)个数,\(g'(\{a_1,a_2,\cdots,a_k\})=\dfrac{n!}{a_1!(a_2-a_1)!(a_3-a_2)!\cdots(a_k-a_{k-1})!(n-a_k)!}\),那么有:\[\begin{aligned}ans=&\......
  • 标准库中的生成器函数——用于重新排列元素的生成器函数
         1注意,itertools.groupby假定输入的可迭代对象要使用分组标准排序;即使不排序,至少也要使用指定的标准分组各个元素。  1#itertools.groupby函数的用法2importitertools3456k1=list(itertools.groupby('LLLLAAGGG'))7print('k1:',k......