【问题标题】:What is Coldfusion 10 random number generation best practice?Coldfusion 10 随机数生成最佳实践是什么?
【发布时间】:2014-01-22 14:05:08
【问题描述】:

如果您将RandRange 与算法一起使用,您还需要使用随机化吗?例如:

  RandRange(1, 37, "SHA1PRNG")  

Adobe 的文档说:

SHA1PRNG:使用 Sun Java SHA1PRNG 算法生成一个数字。 该算法提供了比默认算法更大的随机性。

如果有一个函数可以提供尽可能随机的序列,那就太好了。 Adobe 给出的示例同时使用了 Randomize 和 RandRange。

欢迎任何澄清。

附加信息:

在这种情况下,我从大约 40 个字符的列表中选择随机字符来分配 7 个字符的密码。尽管也有单独的(尽管不一定是唯一的)用户名,但我想避免重复。没有任何财务或机密风险 - 只需要识别教育网站的用户。

【问题讨论】:

  • “最佳实践”是一个见仁见智的问题。一个只有 2 个数字的简单 RandRange 对我来说已经足够了。
  • 除了意见(我完全同意),这也是一个上下文问题。如果我只是在演示抛硬币游戏:我不需要太多随机性。如果我正在为数百万美元的彩票写一个彩票抽屉:我需要更多。这里导致问题的实际用例是什么?这就是 Stack Overflow 问题所针对的情况。这是一个有趣的话题,但恐怕我仍然投票决定将其作为离题结束。

标签: algorithm random coldfusion


【解决方案1】:

对于非重复,您必须缩小 randRange 的范围并从未使用的字符列表中进行选择。

当然,将 RandRange 与 SHA1PRNG 一起使用,不用担心。

你真的不需要随机化。当您需要可预测的随机序列以进行调试时,它仅用于播种随机函数。

另一种解决方案是使用 java.util.Collections 的 shuffle() 对字符集合进行混洗,然后使用 left() 获得所需长度的非重复字符。见:http://www.bennadel.com/blog/2284-Using-java-util-Collections-To-Shuffle-A-ColdFusion-Query-Column-Corrupts-Column-Values.htm

【讨论】:

    猜你喜欢
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    • 2015-12-12
    • 2011-05-03
    • 2013-09-25
    相关资源
    最近更新 更多