由买买提看人间百态

topics

全部话题 - 话题: 随机数
1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)
s******y
发帖数: 28562
1
中国科大研制成功世界上最快的量子随机数发生器 2015-06-29
最近,中国科学技术大学潘建伟、张军等和英国牛津大学的同事合作,实验实现了68
Gbps的高速量子随机数发生器,相关论文发表于仪器领域权威期刊《科学仪器评论》[
Rev. Sci. Instrum. 86, 063105 (2015)]。美国著名的科技评论杂志MIT Technology
Review以“世界最快的量子随机数发生器在中国诞生(World's Fastest Quantum
Random Number Generator Unveiled in China)”为题对该项工作进行了报道。该成
果为未来超高速量子密码系统的量子随机数需求提供了可行的解决方案。
随机数发生器是用来产生随机数序列的一种器件,真随机数通常基于物理系统并具备不
可预测性、不可重复性和无偏性等特征。量子随机数发生器是基于量子物理原理或量子
效应而产生真随机数的系统,在实用化量子密码系统等对随机性质量和安全性要求较高
的领域中具有重要的应用。比特率是量子随机数发生器最重要的指标。早期的量子随机
数发生器利用单光子路径选择方案,比特率仅为4 ... 阅读全帖
z****e
发帖数: 54598
2
来自主题: JobHunting版 - 请教一道随机数生成器的面试题
看了下楼上的回帖
貌似你漏了一个前提
就是人家给没给一个随机数生成的函数
如果没给这题你要做出来就是超级大牛
因为姚期智之所以拿图灵奖就是因为搞出了伪随机数算法
2需要啊,因为如果全部放到同一个sample里面去的话
size会变得很大,算起来会很恶心
3越多随机数概率越接近平均值
所以可以直接用population乘以概率算出每一个随机数出现的频率
误差normally distributed
找一个mean为0的normal distribution随机数生成api
直接生成误差值就好了
b***y
发帖数: 2799
3
☆─────────────────────────────────────☆
wmbyhh (wmbyhh) 于 (Fri Jun 27 20:59:17 2008) 提到:
rand() / (RAND_MAX / N + 1);产生[0...N]的随机数,是必须要求N远小于RAND_MAX,
然而#define RAND_MAX 0x7fff //就是32767了
就是说只能产生0..32767之间的随机数。
那么问题是,如何产生0...1,000,000的随机数??
☆─────────────────────────────────────☆
thrust (WoW 无限期冬眠中) 于 (Fri Jun 27 21:02:08 2008) 提到:
假设你只能产生1位随机数, 你怎么产生5位的随机数?
一位一位产生
(你真的是学CS的吗...)

☆─────────────────────────────────────☆
wmbyhh (wmbyhh) 于 (Fri Jun 27 21:18:13 2008) 提到:
一位一位的产生,再乘上位数
J*******s
发帖数: 251
4
如果使用libc 数学库中的random函数生成随机数,当然是伪随机数。但是这个问题早
解决了。
比如linux利用/dev/urandom设备生成的随机数,基本就可以看成真正的完全随机的真
随机数。
详细自己google.
a**u
发帖数: 99
5
两种办法,一种是算出一个分布函数,然后把平均分布的转换成指数分布.
另外一个是排除法,产生一大堆平均分布的随机数,
然后,对每个数进行排除,如下:(假设分布为exp(a))
假如,该数为a1.
产生随机数一个rnd
rnd > exp(a1),抛弃a1.
当泥把所有的随机数如此检验一边以后得到的将是需要的分布.
条件是,随机数数列的数目足够大.
r**h
发帖数: 1288
6
来自主题: JobHunting版 - 请教一道随机数生成器的面试题
1.假设有一个1-100的随机数生成器
那么将1-12映射到2,13-37映射到7.。。 即可
2.需要。如果其中一个数概率很小那么应该先单独取一次随机数检查是否生成这个特殊
的数,如果未命中则再使用1的方法。由于10^-12很小,因此造成的影响基本可以忽略。
3.很多随机数指的是A里面元素很多,还是说给定一个A和B要生成符合分布的很多数?
我能想到的就是用一个hash存下每个映射的值对以减少重复计算
l******e
发帖数: 20
7
设计一个分布式随机数生成器。其实他要的是序列号生成器,不需要随机。具体要求是

1. 在某一时间段里生成某个范围的随机数,多个机器协作,但是随机数必须不能有重
复。
2. 在某一时间段里的数,一定要比下一个时间段里生成的数小。
第一个要求很好做, 可根据机器的个数用integer的高位来identify
第二个如何做还是不清楚
原帖:
http://www.mitbbs.com/article_t/JobHunting/32183037.html
O*******d
发帖数: 20343
8
来自主题: Programming版 - 请教c++真随机数的生成
网上有卖USB插件的。 用电子电路的热噪音产生真随机数。 由于受热噪音频率的限制
,一般只能每秒产生一万个随机数。 如果需要大量随机数,可以把产生的数存成文件
,使用一次即丢弃。
http://www.entropykey.co.uk/

>
g******s
发帖数: 733
9
来自主题: Computation版 - 请问随机数和伪随机数有什么区别
matlab的rand产生的是随机数还是伪随机数?先谢了!
j**u
发帖数: 6059
10
来自主题: Computation版 - [转载]随机数生成?
发信人: signalat (晃晃悠悠), 信区: Mathematics
标 题: 随机数生成?
发信站: BBS 未名空间站 (Sat Feb 3 17:51:38 2007)
要求生成n个随机数,其中约束条件是这n个数的和是m.怎么生成这n个随机数?
s*****n
发帖数: 5488
11
来自主题: JobHunting版 - 问个随机数的问题
这题以前有讨论。以前也没理解就是记住了。今天推了一下。
int rand7()
{
int a;
while( (a=(rand5()-1)*5+(rand5()-1)) > 20 );
return a/3 + 1;
}
trick是,第一次生成5*[0..4],第二次生成[0..4],so 所有可能组合是
0 0
0 1
0 2
0 3
0 4
5 0
5 1
5 2
5 3
5 4
10 0
10 1
10 2
10 3
10 4
.....
从而生成了0 到24的等概率随机数。除去后面4个不需要的数,就是0..20的随机数。
退而光之,如果用rand x 生成rand y,x如果小于y.那么
先构成(rand x -1)* x + rand x -1 的随进数先。因为rand x - 1正好落在前面的空
隙中,不会出现重复。
i**********e
发帖数: 1145
12
来自主题: JobHunting版 - 问个随机数的问题
有个好办法,就是初始化以下的 5 x 5 矩阵:
1 2 3 4 5
1 1 2 3 4 5
2 6 7 1 2 3
3 4 5 6 7 1
4 2 3 4 5 6
5 7 0 0 0 0
两次 rand5 就会生成两个 1-5 的随机数,把它们设为矩阵的 row and column(其实就是对应矩阵里的某一个位置).如果矩阵返回的值为 1-7 某个数,就直接返回那个值。如果返回的值是0,那无所谓,重新生成两个随机数,再次检查矩阵,直到找到 1-7 为止。
这个放弃重新sample的原理 其实是根据数学概率论的 rejection sampling. 想知道更多的话,你可以看看这个维基百科连接:
http://en.wikipedia.org/wiki/Rejection_sampling
有一个很有趣的问题,就是以上的方法,平均调用 rand5() 多少次?
还有一个更有趣的问题就是,以上的方法能再优化吗?应该怎么优化呢?
一些常见面试题的答案与总结 -
http://www.ihas1337code.com
t**********n
发帖数: 145
13
来自主题: JobHunting版 - 一个经典的随机数的问题。求教。
嗯范围可以解决,
但是理论上可以证明,rand5()是没有能力只通过一次随机数的产生,和一些四则运算
,来获得更大范围的随机数的。
(前提是,这里说的都是整数哦。。。如果是实数范围的话另当别论啦。)
所以必须通过多次rand5()才行呢

范围没事,可以用 rejection sampling解决。
i*******n
发帖数: 508
14
来自主题: JobHunting版 - 请教一道随机数生成器的面试题
给定一个随机数组比如A=[2, 7, 15, 20, 10],还有一个数组是每个数对应的出现概率
比如B=[0.12, 0.25, 0.56, 0.02, 0.05]。(数字记不清了)
1。如何设计这个随机数生成器?
2。如果其中一个数概率很小,比如10^-12,需要修改1的设计吗?
3。如果需要生成很多随机数,有什么优化可以做?
d**********6
发帖数: 4434
15
来自主题: JobHunting版 - G家onsite 随机数一题
一用bs就不符合O(n)的要求吧,n个数都要搜一次,就是O(nlog(n))
一旦搜到有重复还得重新生成,生成完又搜一次,worst case会进入死循环的
我觉得mapping才是正道,traverse black list一次,用一个计数器i,每遇到bl中的
元素就跳到下一个,然后把i append到另外一个数组里,就得到map好的数组了
不过map会有问题的,生成的随机数不是平均分布的。你的题目说明不是很清楚,不是
平均分布的随机数有没有问题?
d**********6
发帖数: 4434
16
来自主题: JobHunting版 - G家onsite 随机数一题
一用bs就不符合O(n)的要求吧,n个数都要搜一次,就是O(nlog(n))
一旦搜到有重复还得重新生成,生成完又搜一次,worst case会进入死循环的
我觉得mapping才是正道,traverse black list一次,用一个计数器i,每遇到bl中的
元素就跳到下一个,然后把i append到另外一个数组里,就得到map好的数组了
不过map会有问题的,生成的随机数不是平均分布的。你的题目说明不是很清楚,不是
平均分布的随机数有没有问题?
I***a
发帖数: 704
17
有谁对随机数生成熟悉的?
随机数生成里用到mod 2E64的加和乘,
怎么代码里都是些 位xor?没有mod运算了?
sprng.fsu.edu
c****r
发帖数: 154
18
来自主题: Database版 - [转载] 问个随机数的初级问题
【 以下文字转载自 Science 讨论区,原文如下 】
发信人: calmer (行云流水), 信区: Science
标 题: 问个随机数的初级问题
发信站: Unknown Space - 未名空间 (Wed Apr 27 17:31:49 2005) WWW-POST
两组数(各500), 想任意取其中的数,重新组合新的一组500个,但是不重复使用样本,
我产生的随机数, 数组index, (0-1)乘500,总是重复,什么简单的方法可以做到啊
谢谢
s*******n
发帖数: 730
19
就这样,第二步不需要 != a。
或者你可以只产生一个随机数,scale到你需要的区间的125%,然后落在25%用a,落在
需要的区间用
该随机数。明白?都一样啦,很简单的问题。
c****p
发帖数: 6474
20
来自主题: Programming版 - 请教c++真随机数的生成
编程语文实现的随机数发生器不能产生真随机数吧

>
m****s
发帖数: 1481
21
来自主题: Programming版 - 问个关于随机数生成器的问题
从numerical receipe上抄了一个生成【-1,1】均匀分布随机数的程序,周期是2^32-1
。这个周期的意思是说生成的序列是每2^31-1个伪随机数头尾连成一个圈不断重复的意
思吧?
那么如果我换一个seed,生成的新的序列和之前那个序列是完全不一样还是说是同一个
序列但是起点不一样罢了?
谢谢
O*******d
发帖数: 20343
22
来自主题: Programming版 - 请教随机数生成问题
如果需要真正的随机数,最好的办法是用硬件的发生器。 网上有卖的,USB 接口, 因
为是用电子电路的热涨落来产生随机数,所以产生速度有限制,大概每秒1万个随机的
比特。
O*******d
发帖数: 20343
23
来自主题: Programming版 - 请教随机数生成问题
热涨落是真正的随机。 但是热涨落噪音的频率有限,所以用硬件产生随机数,bit
rate不能太高,否则两个bit的产生会落在同一个涨落中,就不是随机的了。 硬件随机
数的好处之一就是不需要seed,过程是不可重复的。 加密用的key,要求高时,要用硬
件随机数。
m****s
发帖数: 1481
24
来自主题: Programming版 - 请教随机数生成问题
难道不是找一个周期比较大的随机数产生器然后随便选个seed就行了么,numerical
recepie上面我记得有个2^53的,大概10^16了,比你需要的billion高出好多个量级了
,应该足够用了吧。实在不行,再拿一个小随机数生成器和这个两个结合起来应该够了
f*******t
发帖数: 7549
25
PC生成的随机数不是均匀分布的,数列肯定有一定相似性,所以叫伪随机数,具体原因
是什么我不清楚。
但怎么算出手气最佳的位置,恐怕只有NSA的顶尖数学家才有这个能耐。
l****y
发帖数: 92
26
来自主题: Computation版 - 随机数???
我想生成随机数,在fortran的code里用了random_number()这个函数,可是运行后,发现每
次生成的随机数都是一样的. 请问这是什么回事啊?应该如何改进啊?
谢谢指点
a******s
发帖数: 232
27
来自主题: Computation版 - 随机数???
随机数要看种子的,种子一样的话,当然出来的随机数就一样了,换种子就行了。
比如那当前机器时间做种子,etc.
S***y
发帖数: 186
28
来自主题: Computation版 - 请问随机数和伪随机数有什么区别

应该是伪随机数吧。也就是说,是一串看似随机的数,
但是实际上,这些数还是通过某种可知的且可控的机制产生的。
N*********r
发帖数: 40
29
来自主题: Computation版 - 请问随机数和伪随机数有什么区别
是啊。
真随机数必须有外部的随机源,比如
http://www.lavarnd.org/
b***n
发帖数: 53
30
来自主题: Computation版 - 请问随机数和伪随机数有什么区别
以后电脑里装个色子, 就有随机数了.
H****E
发帖数: 444
31
我在Verilog-A下调用rdist_normal产生的伪随机数,大概周期还不到
80k,~2^16,感觉太短了点,但是自己写的电路很简单,应该没写错,
有什么办法可以改变Verilog-A的伪随机数周期吗?求指教,谢谢!
btw,运行环境是HSPICE最新版本……
s******t
发帖数: 119
32
来自主题: Mathematics版 - 随机数生成?
要求生成n个随机数,其中约束条件是这n个数的和是m.怎么生成这n个随机数?
s********y
发帖数: 37
33
据说,真正的随机数只能靠物理方法产生
如果由软件产生的,其实都是伪随机数,因为软件是用一定规则产生这个数的,即使再
复杂,理论上是可以预测的
如果那种摇小球的机器是用软件控制的,那摇出的小球是否是用一定规律的?具有理论
上的可预测性吗?当然实际上作到预测是很难的,因为计算量太大
我记得有人说那种老虎机不是真正随机的,而是用复杂的数学方法算出的
z*******n
发帖数: 203
34
来自主题: Mathematics版 - 随机数的疑问
一组随机数(0,1),如果每隔n个取其中的一个,那么所得到的数就不再是随机数了
,这在数学叫做什么理论?谢谢。
m****l
发帖数: 528
35
来自主题: Statistics版 - 求教R产生随机数的问题
请问,有哪个现成的R package或者function能产生Multivariate Exponential/Gamma
的随机数?
我知道MASS里的mvrnorm可以产生多元正态随机数,但是google了半天也没找到产生多
元指数或者多元gamma的package。。
求大牛指点!

发帖数: 1
36
来自主题: Military版 - 随机数的突破。好消息啊
Marcin Pawowski 发布论文 宣称可以生成真正的随机数。这个有重大意义。
p***r
发帖数: 8071
37
来自主题: Military版 - 随机数的突破。好消息啊
生成真正的随机数的论文和专利一查一堆。

有重大意义。

发帖数: 1
38
来自主题: Military版 - 随机数的突破。好消息啊
这个据说生成速度更快 也不需要复杂硬件。
[在 pplar (Frank) 的大作中提到:]
:生成真正的随机数的论文和专利一查一堆。
:有重大意义。
p***r
发帖数: 8071
39
来自主题: Military版 - 随机数的突破。好消息啊
没有复杂硬件的随机数生成器真还没听说过。
D*********y
发帖数: 876
40
来自主题: JobHunting版 - 一个经典的随机数的问题。求教。
5*(rand5()-1):产生0,5,10,15或者20
5 * (rand5() - 1) + rand5()就是1-25之间的随机数
如果我没有记错的话,后面那个while应该是:
if(i<21) return i%7
while(i > 21);
// i is now uniformly random between 1 and 21
return i % 7 + 1;
产生的是2-5,就不对了
至于楼主的做法,
i = 6*(rand5()-1),产生的是0,6,12,18或者24
y*******8
发帖数: 2377
41
来自主题: JobHunting版 - 编程关于随机数的抽取
我有个问题不知道如何做,希望大牛指点一下。
对于如果是不放回随机数抽取,如何写程序,Java 或 C++ 都行。
比如1-50, 抽取50次,最后全部抽取完。谢谢了。
t*****h
发帖数: 137
42
来自主题: JobHunting版 - 请教一道随机数生成器的面试题
这个一般是先计算CDF(Cumulative distribution function),然后用[0,1] uniform
随机数来判断。小概率随机数产生是个tricky的问题。如果一般是算期望的话(Monte
Carlo),可能就要change of measure了,本质上就是换权重。
c******t
发帖数: 1500
43
来自主题: JobHunting版 - 请教一个随机数,概率相关的问题
在C++中使用 "rand() % 100" 则会产生[0, 99]之间的100个随机数
如果想要以5%的概率去做某件事情,那么我们可以
1.
if (rand() % 100 < 5)
{
...
}
或者
2.
if (rand() % 100 % 20 == 0)
{
...
}
请问版上的大牛,这两种方式是不是等价的呢?还是说会有细微的不同?
j*****3
发帖数: 106
44
来自主题: JobHunting版 - 请教一个随机数,概率相关的问题
感觉第二个好一些吧。
这个你加seed没?循环多少次哪?感觉如果次数少的话,产生的随机数可能会分布不够
均匀,这样应该是第二种好一些,如果次数足够多,分布均匀,两者应该一样。
c******t
发帖数: 1500
45
来自主题: JobHunting版 - 请教一个随机数,概率相关的问题
烦请详细解释一下为什么“如果次数少的话,产生的随机数可能会分布不够均匀”?
想不通
j*********6
发帖数: 407
46
来自主题: JobHunting版 - 请教一道产生随机数的问题
没看懂 为什么要 map all K integers to last K integers in the array.
为什么最后只需要Rand%(N-K)? 如何N = 10, K array 是 0-7, K= 8, 那么你最终只
能随机出0 1 2 三个随机数,永远都是在array 的范围内?
不太明白 求解答 多谢啦
f********a
发帖数: 165
47
来自主题: JobHunting版 - G家onsite 随机数一题
写一个random函数,产生0 ~ n-1的数,但是有一个black list,产生的数不能在black
list里。 bl是sorted的。
int myRandom(int n, vector bl)
{
    //.....
}.
时间复杂度log(n)
这里是解
http://www.geeksforgeeks.org/forums/topic/generate-a-random-num
但问题是建立mapping的时候怎么样才能log(n)二分查找 找到下个不在bl里面的数?
follow up是设计一个分布式系统,可以往这个系统里面call一个function叫
getRandom(),每次call返回一个随机数,不能有重复。follow up不用考虑bl.
w****x
发帖数: 14
48
来自主题: JobHunting版 - G家onsite 随机数一题
不应该用map,直接产生随机数,然后在black list里走。这时可用二叉树了。
1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)