2016-10-03 31 views
0

我想编写简单的页面,这将允许我生成非重复数字。使用PHP或Javascript生成非重复数字

我有下面的代码:

function rand (min, max, except) { 
    var number = except; 
    while (number == except) { 
     number = Math.floor(Math.random() * (max + 1 - min) + min); 
    } 
    return number; 
} 

var test = []; 
while (test.length < 1) { 
    test.push(rand(100, 500)); 
} 
alert(test); 

它工作正常,唯一的一点是,它会产生随机数,但在我点击例如“提交”按钮,它会生成新的随机数字,与前一次请求时生成的数字相同。

我需要的是 - 页面应该以某种方式保存已经生成的数字,并在下次生成数字时,它不应该再次使用它。

任何想法如何做到这一点?


也许有一些功能,创建一个基于时间/日期随机数等

+0

当你calll'兰特()'你没有通过' except'。所以你的rand()是做什么的? –

+0

您必须记录已经生成的数字。一个数据库,一个文件,一些东西。或者,您也可以传入前一个生成的数字的最大值,从那里开始并将'max_num'的一个新范围设置为'larger_than_max'。重复,直到无限。 – Andrew

+0

@Andrew mySQL DB可以使用。你可以通过如何使用usinjg DB来解决问题吗? – Roman

回答

0

试试这个代码:

<?php 

    function randomGen($min, $max, $quantity) 
    { 
     $numbers = range($min, $max); 
     shuffle($numbers); 
     return array_slice($numbers, 0, $quantity); 
    } 

    print_r(randomGen(0,20,20)); //generates 20 unique random numbers 

?>