循环rand(),在下一个rand()上不使用之前的?

时间:2015-10-13 01:46:49

标签: c++ random ctime

每个循环我需要两个随机数,但不能使用前一个循环的随机数。我迷路了,我已经搜索过,不知道该怎么做。请帮忙!我把我的代码放在下面。所以,具体来说,我需要生成存储在n1和n1中的两个随机数。 N2。然后,在下一个循环中,不使用那些先前的数字。但是,可以在连续两次使用它们之后使用它们。

document.getElementById('BtnTimerOnOff').textContent = "Stop timer"



    <!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <script>

        var milisec=0
        var seconds=0
        document.d.d2.value='0'
        var onoff=0;


        function display(){
            if (milisec>=9){
                milisec=0;
                seconds+=1
            }
            else
                milisec+=1
            document.d.d2.value=seconds+"."+milisec
            setTimeout("display()",100)
        }

        function TimerOnOff(){
            var a = document.getElementById('BtnTimerOnOff').textContent

            //var b;
            alert(document.getElementById('BtnTimerOnOff').textContent)

            if (document.getElementById('BtnTimerOnOff').textContent = "Start timer") {
                document.getElementById('BtnTimerOnOff').textContent = "Stop timer"
                a = document.getElementById('BtnTimerOnOff').textContent
                alert(document.getElementById('BtnTimerOnOff').textContent)
                alert('aaa')
                display()
            }
            else if (document.getElementById('BtnTimerOnOff').textContent = "Stop timer"){
                    a = document.getElementById('BtnTimerOnOff').textContent
                    alert("Stop the timer")
            }
        }
    </script>
</head>
<body>
<table border="0">
    <tr>
        <button type= "button" id="BtnTimerOnOff" onclick="TimerOnOff()">Start timer</button></tr>
    <td align="center" ><font face="JuraLight" size="6"><strong>Online Time:</strong></font></td>
    <td id="timer" align="center"><form name="d">
        <p><input type="text" size="8" name="d2"></p>
    </form>
    </td>
    <td align="center"><font face="Arial" size="6"><strong>seconds!</strong></font></td>
    </tr>
</table>

</body>
</html>

2 个答案:

答案 0 :(得分:1)

执行随机选择而不重复的简单方法是以随机顺序保留数字列表,每个数字的一​​个条目在您的范围内。然后你只需取一个列表前面的那个,使用它,然后将它移到以后的位置。

在你的情况下,你会将它移动到至少一个远离前面的位置(移除它之后),这样前面的下一个数字将与旧前面的数字不同。

示例:

初始清单:

6,5,10,1,0,11,8,12,4,2,3,7,9

取第一个号码并从列表中删除。

列表现在是:

5,10,1,0,11,8,12,4,2,3,7,9

将数字插入非前方的随机位置。

列表现在是:

5,10,1,6,0,11,8,12,4,2,3,7,9

答案 1 :(得分:0)

您可以在randomize();之前使用rand()%13,然后程序会在每次随机数字生成时生成,并且不会重复...