ruby - Ruby 中的快速(不安全)随机字节生成器

标签 ruby testing random

我经常需要随机字节来测试字节缓冲区上的各种方法。现在我正在使用 SecureRandom.random_bytes 但由于它需要安全,所以速度很慢。对于这种情况,是否有使用 C 扩展来快速生成随机字节的替代方法?

更新:

最简单的方法是使用 Random.new 而不是 SecureRandom

require 'securerandom'
require 'benchmark'
Benchmark.bm(12) do |x|
  x.report("SecureRandom:") { 100.times { SecureRandom.random_bytes(1024*1024*5) } }  
  x.report("Random:") { 100.times { Random.new.bytes(1024*1024*5) } }  
end

交付:

                   user     system      total        real
SecureRandom: 15.510000   0.170000  15.680000 ( 15.952913)
Random:        0.920000   0.120000   1.040000 (  1.070739)

最佳答案

Randombytes 方法中,您必须传递字节的大小,这将为您提供一些技巧

Random.new.bytes(10) # => "\xD7:R\xAB?\x83\xCE\xFAkO"

更多引用在这里 http://ruby-doc.org/core-2.2.0/Random.html

关于ruby - Ruby 中的快速(不安全)随机字节生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34264402/

相关文章:

php - 随机显示来自查询的帖子

ruby-on-rails - 如何更改 Ruby on Rails 解析两位数年份输入的方式

user-interface - 代码部署后如何比较网站的用户界面元素?

java - 模拟一个配置文件

java - 如何在 Java 中使用 ENUM 生成随机数

java - 我应该更喜欢 ThreadLocalRandom 而不是 ThreadLocal<Random>?

ruby-on-rails - 用于捕获冒号分隔的键值对的正则表达式,具有多行值

ruby 遍历数组并提取元素

mysql - 使用 Sequel table_name.all 时获取行的结果

ruby-on-rails-3 - 显示 Rails 测试失败的行号