【问题标题】:Generator non repeating numbers using PHP or Javascript使用 PHP 或 Javascript 生成不重复的数字
【发布时间】:2016-10-03 06:23:27
【问题描述】:

我想写一个简单的页面,它可以让我生成不重复的数字。

我有以下代码:

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 );

它工作正常,唯一的事情是它会生成随机数,但是在我点击后,例如“提交”按钮,它将生成新的随机数,可以与之前请求时生成的相同。

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

有什么想法吗?


也许有一些函数可以根据时间/日期等创建随机数。

【问题讨论】:

  • 当您调用rand() 时,您没有通过except。那么你的 rand() 做了什么?
  • 您必须记录已生成的数字。一个数据库,一个文件,什么的。或者,您也可以传入先前生成的数字的最大值,从那里开始并设置一个新的范围 max_numlarger_than_max。重复直到无穷大。
  • @Andrew mySQL DB 可以使用。你能猜出如何使用 DB 来实现它吗?
  • 您希望在多长时间内不重复以前的号码?直到下一次导航,浏览器会话结束,明年?永远? (2) 内存应该是为每个用户单独使用还是全局内存?
  • @trincot - 永远

标签: javascript php


【解决方案1】:

试试这个代码:

<?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

?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 2012-12-03
    • 2011-09-02
    • 2017-12-21
    相关资源
    最近更新 更多