如何使用 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 从数组中选择随机值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章