相关疑难解决方法(0)

如何在Ruby中生成随机字符串

我正在为"A"生成一个8个字符的伪随机大写字符串."Z":

value = ""; 8.times{value  << (65 + rand(25)).chr}
Run Code Online (Sandbox Code Playgroud)

但它看起来并不干净,并且它不能作为参数传递,因为它不是单个语句.要获得一个混合大小写的字符串"a".."z"加上"A".."Z",我将其更改为:

value = ""; 8.times{value << ((rand(2)==1?65:97) + rand(25)).chr}
Run Code Online (Sandbox Code Playgroud)

但它看起来像垃圾.

有没有人有更好的方法?

ruby random passwords

729
推荐指数
21
解决办法
40万
查看次数

创建无重复的随机数序列

重复:

O(1)中的唯一随机数?

我想要一个伪随机数生成器,它可以按随机顺序生成没有重复的数字.

例如:

随机(10)

可能会返回5,9,1,4,2,8,3,7,6,10

有没有更好的方法来做到这一点,除了使数字的范围和洗牌,或检查生成的列表重复?


编辑:

此外,我希望它在没有整个范围的情况下有效地生成大数字.


编辑:

我看到每个人都建议使用随机算法.但是,如果我想生成大的随机数(1024字节+),那么该方法将占用更多的内存,而不是我刚使用常规RNG并插入到Set中,直到它是指定的长度,对吧?对此没有更好的数学算法.

c c++ random algorithm

38
推荐指数
5
解决办法
7万
查看次数

我如何用Ruby/Python编写这个?或者,你能将我的LINQ翻译成Ruby/Python吗?

昨天,我问了这个问题,从来没有得到过我真正满意的答案.我真的想知道如何使用诸如Ruby之类的函数语言生成N个唯一随机数的列表,而不必非常必要.

因为我没有看到任何我真正喜欢的东西,所以我在LINQ中编写了我想要的解决方案:


       static void Main(string[] args)
        {
            var temp = from q in GetRandomNumbers(100).Distinct().Take(5) select q;
        }

        private static IEnumerable GetRandomNumbers(int max)
        {
            Random r = new Random();
            while (true)
            {
                yield return r.Next(max);
            }
        }
Run Code Online (Sandbox Code Playgroud)

你能把我的LINQ翻译成Ruby吗?蟒蛇?任何其他函数式编程语言?

注意:请尽量不要使用太多的循环和条件 - 否则解决方案是微不足道的.此外,我宁愿看到一个解决方案,你不必生成比N大得多的数组,这样你就可以删除重复项并将其修剪为N.

我知道我很挑剔,但我真的很想看到这个问题的优雅解决方案.谢谢!

编辑:
为什么所有的downvotes?

最初我的代码示例在Take()之后有Distinct(),正如许多人指出的那样,它可能会留下一个空列表.我已经改变了调用这些方法的顺序,以反映我的意思.

道歉:
我被告知这篇文章是相当势利的.我并不是想暗示LINQ比Ruby/Python更好; 或者说我的解决方案比其他人好得多.我的目的只是学习如何在Ruby中执行此操作(具有某些约束).如果我是一个混蛋,我很抱歉.

ruby python linq functional-programming

8
推荐指数
2
解决办法
860
查看次数

随机选择一个随机数,但两次从不相同的随机数

可能重复:
如何在Ruby中生成n个唯一随机数的列表?

我想要做:

Random.rand(0..10).times do
  puts Random.rand(0..10)
end
Run Code Online (Sandbox Code Playgroud)

但如果已经显示了随机数,则无法再次显示.我最容易怎么做?

ruby random ruby-on-rails

5
推荐指数
1
解决办法
519
查看次数

在Ruby中,"块出来的收益"是什么意思?

我是Ruby的新手,我正在尝试以下方法:

mySet = numOfCuts.times.map{ rand(seqLength) }
Run Code Online (Sandbox Code Playgroud)

但是我得到了"收益率被阻止"的错误.我不确定他的意思.顺便说一下,这个问题是我在这里提出的一个更普遍的问题的一部分.

ruby functional-programming

3
推荐指数
1
解决办法
3756
查看次数

在ruby/rails中生成n个唯一的随机整数

我试图在1和最大之间生成n个唯一的随机数

我尝试了以下代码但不起作用(返回重复的数字)

r = [ ]
n.times { v = rand(max) while r.include? v ; r << v}
Run Code Online (Sandbox Code Playgroud)

它出什么问题了?谢谢

添加:

最多是数千

n是10

ruby ruby-on-rails

1
推荐指数
1
解决办法
6377
查看次数