如何使用 JavaScript 从数组中选择随机值? [复制]

Posted

技术标签:

【中文标题】如何使用 JavaScript 从数组中选择随机值? [复制]【英文标题】:How do I choose a random value from an array with JavaScript? [duplicate] 【发布时间】:2011-08-08 04:53:26 【问题描述】:

可能重复:javascript: Getting random value from an array

我有一个带有以下行的外部 js:

var postmessage = "hi my favorite site is http://google.com";

但是有没有办法像这样从数组中随机选择一个站点

var postmessage = "hi my favorite site is +'random'";

random= http://google.com, http://yahoo.com, http://msn.com, http://apple.com

如何让它发挥作用?

【问题讨论】:

在标题中使用正确的语言将是一个开始 首先:你的帖子标题应该是“Javascript”......不应该吗?您可以使用以下方法初始化数组: var random = array(....);然后使用“Math.random()”获取索引 ***.com/a/45606635/8202629 【参考方案1】: var sites = new Array('http://www.google.com', "http://www.***.com") var postmessage = "hi my favorite site is" + sites[Math.round(Math.random()*(sites.length-1))];

首先将所有网站粘贴到一个数组中。然后从数组长度中获取一个随机数(-1是因为数组是零索引的,返回的长度从1开始)

【讨论】:

【参考方案2】:

做这样的事情:

function getRandomSite()
   var sites = ["google.com","bing.com","xyz.com","abc.com","example.com"];
    var i = parseInt(Math.random()*(sites.length-1));
    return sites[i];
;

【讨论】:

由于您乘以 10,然后测试它是否大于长度,因此您为列表中的最后一个站点引入了偏差:它将被更频繁地选择(几乎在您的示例中,有 50% 的时间)。而是乘以数组的长度。 嗨,我在回答问题后就想到了这个问题。你就在这里。【参考方案3】:
var favorites = ["http://google.com", "http://yahoo.com", "http://msn.com", "http://apple.com"];
var favorite = favorites[Math.floor(Math.random() * favorites.length)];
var postmessage = "hi my favorite site is " + favorite;

创建一个网站数组,然后从数组中选择一个元素。您可以通过使用Math.random() 选择一个随机数来执行此操作,这会得到大于或等于 0 且小于 1 的结果。乘以数组的长度,然后取 floor(即,只取整数部分,去掉任何小数点),所以你将有一个从 0 到比数组长度小 1 的数字(因此这将是数组的有效索引)。使用该结果从您的数组中选择一个元素。

【讨论】:

有一个错误 -- 在favorites.length 之后需要一个括号。 Math.round(7.919417901018048);// 8 & Math.floor(7.919417901018048); // 7

以上是关于如何使用 JavaScript 从数组中选择随机值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用javascript从关联数组中选择随机值? [复制]

jQuery 从字符串数组中选择一个随机值

如何在javascript中修改数组并提取随机值

从JavaScript中的数组中选择随机数量的元素

如何从 C# 中的泛型类型数组中选择一组随机值?

如何使用javascript在php的输入框中生成随机值