3122: [Sdoi2013]随机数生成器 Description Input 输入含有多组数据,第一行一个正整数T,表示这个测试点内的数据组数。 接下来T行,每行有五个整数p,a,b,X1,t,表示一组数据。保证X1和t都是合法的页码。 注意:P一定为质数 输入含有多组数据,第一行一个正整数T, ...
分类:
其他好文 时间:
2016-09-05 19:18:02
阅读次数:
157
今天看到一段代码,可以从0.....n-1中随机等概率的输出m个不重复的数(n远远大于m)。遂记录下来。 首先,产生随机数,不免要用到srand,rand函数。先简单介绍下两个函数。 1,void srand(unsigned int seed); 初始化随机数生成器,对于每一个不同的seed,每一 ...
分类:
其他好文 时间:
2016-09-01 12:36:17
阅读次数:
109
Random Java中的Random类生成的是伪随机数,使用的是48-bit的种子,然后调用一个linear congruential formula线性同余方程(Donald Knuth的编程艺术的3.2.1节) 如果两个Random实例使用相同的种子,并且调用同样的函数,那么生成的sequen ...
分类:
编程语言 时间:
2016-08-31 02:08:39
阅读次数:
214
优先按照它说明的方法处理数组 然后为了让数列中尽可能多的出现小的数字 所以1是必须要出现的,这样才能使整个数列的排序后字典序最小。 我们思考,如果2也能在这个数列中那就最好不过了 但是2有可能不在这个数列里,就是2在走了1就不可能走的地方的话,就不能走2了。 所以从小到大枚举数字,如果当前数字能走, ...
分类:
其他好文 时间:
2016-08-11 15:54:58
阅读次数:
238
假设希望产生位于0到某个上界之间的随机整数。可能会这样编写: 测试随机性: 结果接近于666666,由random方法产生的数字有2/3在取值范围的前半部分。 编写一个随机数生成的方法需要了解关于随机数生成器、数论和2的求补算法的相关知识。 现有的类库提供随机数生成的方法,不需要自己来做这样的工作, ...
分类:
其他好文 时间:
2016-08-11 00:21:04
阅读次数:
360
一个特例:已知一个随机数生成函数f3(),即以相同的概率随机返回0, 1, 2(返回每个数的概率均为1/3),现要求通过调用f3()实现一个函数f5()。 解答方法: (1)最基本的思路: 计算机中所有的数都是由二进制表示,所以如果能得到一个函数f2(),以50%的概率得到0或者1,那就可以通过这个 ...
分类:
其他好文 时间:
2016-08-09 09:25:05
阅读次数:
3134
3122: [Sdoi2013]随机数生成器 Description Input 输入含有多组数据,第一行一个正整数T,表示这个测试点内的数据组数。 接下来T行,每行有五个整数p,a,b,X1,t,表示一组数据。保证X1和t都是合法的页码。 注意:P一定为质数 输入含有多组数据,第一行一个正整数T, ...
分类:
其他好文 时间:
2016-07-30 22:21:52
阅读次数:
219
矩阵快速幂+快速乘即可。总调不出来,然后发现输出时a写成b了sadsadsad。 [BZOJ2875][NOI2012]随机数生成器 Description 栋栋最近迷上了随机算法,而随机数生成是随机算法的基础。栋栋准备使用线性同余法(Linear Congruential Method)来生成一个 ...
分类:
其他好文 时间:
2016-07-23 19:47:55
阅读次数:
161
【题目大意】 已知Xn+1=(aXn+c) mod m,求Xn mod g。 【思路】 get到了longlong乘法的正确方法,快速乘。什么是快速乘呢? 简单来讲,快速幂就是模拟了二进制的竖式乘法。如: 10101 × 1011 = 10101*1+10101*2^1*1+10101*2^2*0+ ...
分类:
其他好文 时间:
2016-07-10 12:21:12
阅读次数:
137
假定随机数生成器可视为“真随机”的话,我们随机洗乱一副牌,非常有趣的是一些很自然的思路,并不一定能够产生均匀分布。假定牌面存储在一个数组里。 思路一: 每次生成2个随机数索引,交换在这2个索引位置上的牌。伪码: 用到了2次rand(),似乎是不必的。如果每次与第一个位置交换,直觉上是等价的。而且如果 ...
分类:
编程语言 时间:
2016-06-25 23:07:34
阅读次数:
210