Articles of 随机

生成(非常)大的非重复整数序列,无需预先混洗

背景 我有一个简单的媒体客户端/服务器,我写了,我想产生一个非显而易见的时间价值,我发送每个命令从客户端到服务器。 时间戳会有相当的数据(纳秒分辨率,即使由于现代操作系统中定时器采样的限制,它不是真正准确的),等等。 我试图做的(在Linux上,C语言)是生成一个n位值的序列(让我们假设数据现在存储在128位的int数组元素中),没有重叠/碰撞值。 然后我将一个伪随机的128位值/数字作为“salt”,将其应用于时间戳,然后开始向服务器发送命令,递增预先腌制/预先哈希的值。 时间戳大小的原因是因为时间戳可能需要适应非常长的时间。 题 我怎么能用一个初始的盐值来完成这个序列(不碰撞)呢? 听起来和我的目标一致的最好的方法是从这篇文章中注意到 : 如果选项1对您来说不够“随机”,则使用全局(32位)计数器的CRC-32哈希值。 在N位整数和它们的CRC-N之间存在1对1的映射(双射),所以唯一性仍将得到保证。 但是,我不知道: 如果可以(有效地)扩展到128位数据。 如果某种加法/乘法的盐值为序列提供初始种子,将会扰乱它或引入冲突。 跟进 我意识到我可以使用来自libssl或类似的128位随机哈希,但我希望使用相同的盐值的远程服务器能够将散列的时间戳转换回它们的真实值。 谢谢。

什么是/ dev / arandom?

这个手册页说: 注意 :从PHP 5.4.0开始session.entropy_file默认为/dev/urandom或/dev/arandom如果可用)。 在PHP 5.3.0中,这个指令默认是空的。 那么,什么是/dev/arandom ,它与/dev/[u]random什么不同呢?

使用随机在bash中生成一个随机string

我正在尝试使用bash函数RANDOM创build一个随机string,该string由包含整数和字母数字数字的variables(例如:var =“abcd1234ABCD”)中的8个字符组成 谢谢。

Bash脚本启动进程,等待随机,终止进程,重启

我是一个绝对的初学者,并试图创build一个bash脚本来随机化命令行应用程序的开始和退出。 我打算在启动(Crunchbang)后自动启动脚本,在autostart.sh中稍微延迟一下(可在http://interwebworld.co.uk/2011/10/23/how-to-launch-programs-自动启动在crunchbang-linux / ) (sleep 300s && /home/myuser/Scripts/randomizer.sh) & 这实际上就是我需要在randomizer.sh脚本中完成的一些伪代码: start applicationfile wait a random period of time if applicationfile is still running kill its process wait a random period of time exit this script and restart this script else exit this script and restart this script randomizer.sh,因为我到目前为止,我会欢迎一些帮助,如下(包含伪代码的残余),并在这里find睡眠延迟: http : //blog.buberel.org/2010/ 07 / HOWTO随机睡眠持续时间的function于bash.html /path/to/applicationfile […]

Linux / perl mmap性能

我正在尝试使用mmap优化对大数据集的处理。 数据集是在千兆字节范围内。 这个想法是将整个文件映射到内存中,允许多个进程并发处理数据集(只读)。 这不是按预期工作。 作为一个简单的testing,我简单的mmap文件(使用perl的Sys :: Mmap模块,使用我认为直接映射到底层C函数的“mmap”),并让进程hibernate。 当这样做的时候,代码在从mmap调用返回之前花费了一分多时间,尽pipe这个testing什么都不做,甚至没有从mmap的文件中读取。 猜测,虽然也许linux要求整个文件在第一次mmap化时被读取,所以当文件在第一个进程(当它正在睡觉时)被映射后,我在另一个试图读取前几兆字节的文件。 令人惊讶的是,似乎第二个过程在从mmap调用返回之前花费了大量的时间,大约与mmap第一次一样。 我已经确定MAP_SHARED正在被使用,第一次映射文件的过程仍然是活动的(它没有终止,并且mmap还没有被映射)。 我期望一个mmapped文件可以让我给多个工作进程有效地随机访问这个大文件,但是如果每个mmap调用都需要先读取整个文件,那就更困难了。 我还没有使用长时间运行的进程进行testing,看看在第一次延迟之后访问是否快速,但我期望使用MAP_SHARED,而另一个单独的进程就足够了。 我的理论是,mmap会立即返回,而linux会按照需求或多或less的方式加载块,但是我所看到的行为是相反的,表明它需要通过每次调用mmap时读取整个文件。 任何想法我做错了,或者如果我完全误解了mmap应该如何工作?

std :: normal_distribution <double>导致错误的命令窗口与Linux?

任何人来访问这个问题? 每1实现不需要产生相同的数据。 在实践中呢 – arm,x86,free和commercial编译器在STL实现方面有很多不同吗? // g++ –std=c++11 -oa minimal.cpp && ./a #include <iostream> #include <random> using namespace std; int main() { std::mt19937_64 gen; gen.seed(17); cout << "\nNormal\n"; normal_distribution<double> distr1; for (int i = 0; i < 2; i++) { double delay = distr1(gen); printf(" Value = %15.15g\n", delay); } return(0); } /* Results (1) […]

multithreadingrandom_r比单线程版本慢

以下程序基本上与此处所述的程序相同。 当我使用两个线程(NTHREADS == 2)运行和编译程序时,我得到以下运行时间: real 0m14.120s user 0m25.570s sys 0m0.050s 当它只用一个线程(NTHREADS == 1)运行时,即使只使用一个内核,运行时间也会显着提高。 real 0m4.705s user 0m4.660s sys 0m0.010s 我的系统是双核的,我知道random_r是线程安全的,我很确定它是非阻塞的。 当同样的程序在没有random_r的情况下运行并且余弦和正弦的计算被用作replace时,双线程版本运行的时间大约是预期的1/2。 #include <pthread.h> #include <stdlib.h> #include <stdio.h> #define NTHREADS 2 #define PRNG_BUFSZ 8 #define ITERATIONS 1000000000 void* thread_run(void* arg) { int r1, i, totalIterations = ITERATIONS / NTHREADS; for (i = 0; i < totalIterations; […]

Python的SystemRandom / os.urandom总是有足够的熵来encryption

我有一个密码生成器: import random, string def gen_pass(): foo = random.SystemRandom() length = 64 chars = string.letters + string.digits return ''.join(foo.choice(chars) for _ in xrange(length)) 根据文档,SystemRandom使用os.urandom使用/ dev / urandom丢弃随机cryto位。 在Linux中,你可以从/ dev / urandom或者/ dev / random中得到随机数,它们都使用内核可以得到的任何熵。 可以使用tail / proc / sys / kernel / random / entropy_avail来检查可用的熵的数量,这将返回一个数字,如:129。熵越高,可用的熵越多。 / dev / urandom和/ dev / random之间的区别在于,如果entropy_avail足够高(至less60),/ dev / random将只会吐出位,而/ […]

/ dev / random是否真的是随机的?

例如,它可以用来生成一次性密钥? 此外,它的来源是什么?如何用它来生成x和y之间的随机数?

从某个文件夹开始随机的batch file

问题是这样的,我有一个文件夹命名为“ABC”与几个batch file,他们是这样命名的: abc1.bat abc2.bat abc3.bat abc4.bat 等等… 我需要一个脚本,当我点击它的时候会随机启动这些batch file之一。 我需要的脚本将通过名称“abcRandom.bat”或类似的东西存储在相同的文件夹中。