如何不重复随机函数的结果

时间:2013-02-09 07:05:43

标签: javascript random repeat

我有这个功能为我一直在制作的测验随机生成一个国家名称,但我不希望同一个名字出现多次。我怎么能这样做? 这是我正在使用的代码。

<div style="float:left">
<h1> <span id="questionnum"></span>. Can you locate <span id="countryquestion"></span> on the map?</h1>
</div>


<script type="text/javascript">   

generateCountry();

function generateCountry(){

    filenames = [ "Albania", "Andorra", "Armenia", "Austria", "Azerbaijan", "Belarus", "Belgium", "Bosnia and Herzegovina", "Bulgaria", "Croatia", "Cyprus", "Czech Republic", "Denmark", "Estonia", "Finland", "France", "Georgia", "Germany", "Greece", "Hungary", "Iceland", "Ireland", "Italy", "Latvia", "Liechtenstein", "Lithuania", "Luxembourg", "Macedonia", "Malta", "Moldova", "Monaco", "Montenegro", "The Netherlands", "Norway", "Poland", "Portugal", "Romania", "Russia", "San Marino", "Serbia", "Slovakia", "Slovenia", "Spain", "Sweden", "Switzerland", "Ukraine", "United Kingdom" ];

    filename = filenames[Math.floor(Math.random()*filenames.length)];

    document.getElementById('countryquestion').textContent = filename;
    }

</script>

2 个答案:

答案 0 :(得分:2)

filename = filenames.splice(Math.floor(Math.random()*filenames.length), 1);

document.getElementById('countryquestion').textContent = filename[0];

数组拼接将在数组中添加或删除项目。第一个参数是要使用的索引。第二个参数是要删除的索引中有多少个元素(如果只添加到数组则为0)。任何其他参数都是要添加到该位置的数组的项。在这种情况下,我们指定一个随机索引并删除一个项目。返回值是一个已删除的元素数组,在本例中是一个数组,其中一个元素已从文件名中删除。

答案 1 :(得分:0)

您希望它们真正随机且真正独一无二吗?你只能是可能的。

您必须将每个人存储在数据库中以确保没有重复项。如果生成重复项,则需要重新生成或仅增加数字,然后重试。如果这是你正在寻找的,那么尝试从1开始递增值可能是好的。