有人能解释一下Math.floor(rc4Rand.getRandomNumber()是什么意思吗?

时间:2014-01-16 07:59:09

标签: javascript

我理解math.floor和math.random问题,但在这种情况下不是rc4Rand.getRamdomNumber()。我检查了之前询问的那些类似问题,但未找到与rc4Rand相关的代码。维基百科提到了一点点。如果有人认为这是一个太简单的问题而且这不是在这里问的正确的地方,请告诉我从哪里可以获得更多信息。 TKS!这与未完成的任务有关。学生需要完成它。如果不完全了解rc4Rand.getRandomNumber生成的内容,我很难完成它。数组长度为20.代码如下:

var first = ["John", "James", "Bill", "Arnold", "Lisa", "Ann", "Kimberly", "Monica"]; 
var last = ["Smith", "Jones", "Williams", "Brown", "Wilson", "Taylor", "Johnson"]; 
for (var i = 0; i < 5; i++){ 
var n1 = Math.floor(rc4Rand.getRandomNumber() * first.length); 
var n2 = Math.floor(rc4Rand.getRandomNumber() * last.length); 
var nameBirth = first[n1] + " " + last[n2]; 
nameBirth += ", 19" + randint(10) + randint(10); 
document.writeln("Name and birth year:" + nameBirth); 
document.write("Age at 2013: "); 
outputAge(nameBirth); 
} 


function outputAge(nameBirth){ 

4 个答案:

答案 0 :(得分:1)

rc4Rand是您用作图书馆的PRNG公式。它会生成0到1之间的答案。然后,您将乘以一个长度,因此新数字将介于0和长度之间。由于您正在使用floor函数,因此它将向下舍入,为您提供0到length之间的整数。

答案 1 :(得分:1)

rc4Rand.getRandomNumber()创建一个介于0和1之间的随机浮点数。然后将此数字乘以数组first中定义的名字数量。

因此,您实际获得0first.length之间的随机数。 然后通过使用Math.floor(),您将从随机浮点数中删除小数点,并得到一个整数。

然后使用整数从数组first中选择一个随机元素。

基本上它的作用是:

  1. 创建随机数0 < x < first.length
  2. 从中创建一个整数,因此您可以将其用作数组
  3. 的索引
  4. 使用您生成的随机索引选择随机名称

答案 2 :(得分:1)

正如所有其他人详细介绍了您的代码中发生的事情,那么RC4是什么。

RC4本身就是一个流密码。它用作随机数生成器,其输出与文本流进行异或。如果您使用标准rand()函数,则输出是可预测的。 RC4不是。

答案 3 :(得分:0)

产生0到1之间的数字(但小于1):

rc4Rand.getRandomNumber()

生成0到first.length之间的数字(但小于first.length):

rc4Rand.getRandomNumber() * first.length

将该数字缩小:

Math.floor(rc4Rand.getRandomNumber() * first.length);

这会在数组的边界内生成随机数组索引。