之前无论怎么样同个程序同个地方生成的随机数都是同样的后来才明白,如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的。

rand函数在产生随机数前,需要系统提供的生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数。如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的。srand(unsigned seed)通过参数seed改变系统提供的种子值,从而可以使得每次调用rand函数生成的伪随机数序列不同,从而实现真正意义上的“随机”。通常可以利用系统时间来改变系统的种子值,即srand(time(NULL)),可以为rand函数提供不同的种子值,进而产生不同的随机数序列------从百度百科上复制粘贴

srand放在程序的最前面可以让每次同个地方生成的随机数都是真正随机的

例   srand(time(0));//time(0)计算机的时间因为当前时间一定不一样所以种子也不一样

这是从考试的的一道题目上看到的(非常不正经的一场考试1.打表2.卡不掉的随机算法3.这题还好)

--------------------------------------------------------------------------------分割线--------------------------------------------------------------------------------

例题:

这是第2题

双子时空(back.cpp\c\pas)

【问题描述】
你救出了小丁。
这激怒了双胞胎们。
他们祭出大招——“双子时空”。你和小丁分别被关在两个时空里,小丁的时空里有一个1
到n的排列,他被要求给出这个排列的一个最长上升子序列;你的时空里可以看到小丁给出的最
长上升子序列,你需要推断出原排列是什么。显然,可能有很多数列满足这个最长上升子序列,
你想要知道这样的排列有多少,从而计算出自己答对的概率。
…………
【输入格式】
第 1 行一个正整数 n;
第 2 行一个正整数 k,表示最长上升子序列的长度;
第 3 行 k 个整数,表示这个最长上升子序列。
【输出格式】
一行一个整数,表示原排列的可能数。

【输入输出样例】
back.in
5
3
1 3 4

back.out
11
【样例解释】
11种排列分别为(1, 3, 2, 5, 4), (1, 3, 5, 2, 4), (1, 3, 5, 4, 2), (1, 5, 3, 2,
4), (1, 5, 3, 4, 2), (2, 1, 3, 5, 4), (2, 1, 5, 3, 4), (2, 5, 1, 3, 4), (5, 1, 3,
2, 4), (5, 1, 3, 4, 2), (5, 2, 1, 3, 4)。

【数据范围】
对于前 30%的数据 n ≤ 8。
对于 100%的数据 1 ≤ k ≤ n ≤ 15。
数据有一定梯度。

蒟蒻的代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define C getchar()-48
inline int read()
{int s=0,r=1;char c=C;for(;c<0||c>9;c=C) if(c==-3) r=-1;for(;c>=0&&c<=9;c=C) s=(s<<3)+(s<<1)+c;return s*r;
}
int n;
const ll R=1420000;
struct xin{ll x,y,id,ran;
}a[5001000];
bool pd(xin a,xin b)
{return a.ran<b.ran;
}
int ans[5001000];
int main()
{freopen("jump.in", "r", stdin);freopen("jump.out", "w", stdout);srand(time(0));//使用-使用-使用-使用-使用-使用-使用-使用-使用-使用-使用-使用-使用-使用-使用-使用-使用-使用n=read();ll x=0,y=0;for(int i=1;i<=n;i++)a[i].x=read(),a[i].y=read(),a[i].id=i;while(1){for(int i=1;i<=n;i++)a[i].ran=1ll*rand()*rand();//生成随机数-生成随机数-生成随机数-生成随机数生成随机数-生成随机数sort(a+1,a+1+n,pd);for(int i=1;i<=n;i++){int xx=a[i].x,yy=a[i].y;if((x+xx)*(x+xx)+(y+yy)*(y+yy)<(x-xx)*(x-xx)+(y-yy)*(y-yy)) x+=xx,y+=yy,ans[a[i].id]=1;else x-=xx,y-=yy,ans[a[i].id]=-1; }if(x*x+y*y<=R*R){for(int i=1;i<=n;i++) printf("%d\n",ans[i]);return 0;}}fclose(stdin);fclose(stdout); return 0;
}  

生成真正的随机数(非伪随机数)相关推荐

  1. 常用工具类 Math:数学计算 Random:生成伪随机数 SecureRandom:生成安全的随机数 2020-2-13

    常用工具类 阅读: 324836 Java的核心库提供了大量的现成的类供我们使用.本节我们介绍几个常用的工具类. Math 顾名思义,Math类就是用来进行数学计算的,它提供了大量的静态方法来便于我们 ...

  2. python生成50个随机数_Python内置random模块生成随机数的方法

    本文我们详细地介绍下两个模块关于生成随机序列的其他使用方法. 随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的ran ...

  3. shell 生成指定范围随机数与随机字符串 .

    shell 生成指定范围随机数与随机字符串         分类:             shell              2014-04-22 22:17     20902人阅读     评 ...

  4. 【原创】开源Math.NET基础数学类库使用(14)C#生成安全的随机数

                   本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...

  5. c++语言生成一个随机数,C/C++怎么生成“真正的”随机数

    C/C++怎么生成"真正的"随机数 C语言中,直接用rand()函数生成随机数的话,会出现一个尴尬的局面,那就是每次运行都会生成相同的一个数,这显然不能满足我们的期望.怎么回事呢? ...

  6. random and password 在Linux下生成crypt加密密码的方法,shell 生成指定范围随机数与随机字符串...

    openssl rand -hex n (n is number of characters) LANG=c < /dev/urandom tr -dc _A-Z-a-z-0-9 | head ...

  7. 生成特定分布随机数的方法

    生成随机数是程序设计里常见的需求.一般的编程语言都会自带一个随机数生成函数,用于生成服从均匀分布的随机数.不过有时需要生成服从其它分布的随机数,例如高斯分布或指数分布等.有些编程语言已经有比较完善的实 ...

  8. shell 生成指定范围随机数与随机字符串

    shell 生成指定范围随机数与随机字符串 1.使用系统的 $RANDOM 变量 fdipzone@ubuntu:~$ echo $RANDOM 17617 $RANDOM 的范围是 [0, 3276 ...

  9. 波形生成:均匀和非均匀时间向量

    波形生成-- 脉冲.chirp.VCO.正弦函数.周期性/非周期性和调制信号 使用 chirp 生成线性.二次和对数 chirp.使用 square.rectpuls 和 sawtooth 创建方波. ...

  10. java生成指数分布随机数_生成特定分布随机数的方法

    生成随机数是程序设计里常见的需求.一般的编程语言都会自带一个随机数生成函数,用于生成服从均匀分布的随机数.不过有时需要生成服从其它分布的随机数,例如高斯分布或指数分布等.有些编程语言已经有比较完善的实 ...

最新文章

  1. android开发我的新浪微博客户端-登录页面功能篇(4.2)
  2. EasyUI--datebox设置默认时间
  3. btc勒索病毒文件恢复及数据库恢复方案
  4. 高并发IM系统架构优化实践
  5. AtomicIntegerArray类详解
  6. 报告显示H.264份额进一步提升 1080p最受欢迎
  7. 机器学习中的常用概率分布
  8. 用Java递增Map值的最有效方法–仅搜索一次键
  9. 【leetcode】Search for a Range
  10. ngnix集群产生的问题
  11. iOS5 UIKit新特性
  12. redhat5.4上安装oracle9i
  13. 程序员100套简历模板,全网最全
  14. 彻底卸载VMware虚拟机的详细步骤
  15. 6张图教你搞定侧方停车----fwqlzz love is for ever
  16. 背单词App开发日记6(终章总结)
  17. Unity学习笔记--实现一个简单的2D地图编辑器
  18. 2018 拼多多校招贪心算法题
  19. NOIP2016Day1总结
  20. 全球与中国货船维修保养市场深度研究分析报告

热门文章

  1. 一种化学荧光探针945928-17-6,TAMRA alkyne,5-isomer,四甲基罗丹明-炔基
  2. iOS应用性能调优的25个建议和技巧
  3. 千图成像(用图片拼图片)的java教程
  4. DQN相关知识总结及演员-评论员算法介绍(DataWhale组队学习笔记)
  5. 慎用manifest
  6. 前端引入icon的方法(iconfont,fontawesome)
  7. C++11主要新增使用语法介绍
  8. 删除字符 (20分)
  9. 360手机卫士企业版下载
  10. VLDB2017论文阅读-Cohort Query Processing