Javascript 基于当前时间和出生日期的随机数生成器

Javascript 基于当前时间和出生日期的随机数生成器,javascript,random,numbers,generator,seed,Javascript,Random,Numbers,Generator,Seed,我开始学习JavaScript,我发现了这篇文章: 我喜欢自定义种子数生成器的想法,但出于对Thor的热爱,我无法理解它,如果更简单的话,我真的需要一个使用纯javascript或类似jQuery的库完成的实际示例 我们开始: 所以我想要生成10个不同的数字,用“-”(负号)分隔,每个数字的范围是1-50,我希望每个数字的种子由2个东西相乘而成: 以尽可能大的数字序列显示当前时间(每个数字延迟1秒,因此时间会有所不同) 您的出生日期(从3个选择输入) [!]我还想知道我们如何以不同的方式制作这1

我开始学习JavaScript,我发现了这篇文章:

我喜欢自定义种子数生成器的想法,但出于对Thor的热爱,我无法理解它,如果更简单的话,我真的需要一个使用纯javascript或类似jQuery的库完成的实际示例

我们开始: 所以我想要生成10个不同的数字,用“-”(负号)分隔,每个数字的范围是1-50,我希望每个数字的种子由2个东西相乘而成:

  • 以尽可能大的数字序列显示当前时间(每个数字延迟1秒,因此时间会有所不同)
  • 您的出生日期(从3个选择输入)
  • [!]我还想知道我们如何以不同的方式制作这10个数字的动画,比如。。。例如,旧火车站Arival/出发机械显示屏的动画,或类似不同的HTML5画布粒子技术或CSS3或任何真正的技术。-如果你认为这太多,可以在另一个问题中解决

    如果你能帮我解决这个问题,我将永远感激你

    谢谢大家!

    var CustomRandom=函数(nseed){
    变种种子,
    常数=数学功率(2,13)+1,
    prime=1987,
    //任何素数,需要计算,1987年是我的最爱:)
    最大值=50;
    //计算数字浮点精度所需的最大数字(10^n,其中n是点后的位数)
    如果(nseed){
    种子=未播种;
    }    
    如果(seed==null){
    //在你纠正我这个比较之前,请阅读安德里亚·贾马奇关于强迫的文章http://goo.gl/N4jCB  
    seed=(新日期()).getTime();
    //如果没有种子,请使用时间戳
    }     
    返回{
    下一步:函数(最小,最大){
    种子*=常数;
    种子+=质数;
    返回最小值和最大值?最小值+种子百分比最大值/最大值*(最大值-最小值):种子百分比最大值/最大值;
    //如果未提供“最小”和“最大”,则返回0和1之间的随机数
    }    
    }    
    }
    var rng=客户随机(09031887);
    //使用“09031887”作为种子?
    rng.next();
    rng.next();
    });
    
    您的出生日期:
    日期: 01 020304050607080910111213141516171819202122232425262728293031 月份: 01 0203040506070809101112 年份: 1998 19971996199519941993199219911990198919881987198619851984198319821981198019791978197719761975197619751976

    - - - - - - - - -


    生成
    如果在提供的代码中修复了
    语法错误
    ,那么Javascript代码实际上可以工作。但是,您没有任何事件处理程序可以使用提供的HTML控制它

    var CustomRandom=函数(nseed){
    变种种子,
    常数=数学功率(2,13)+1,
    prime=1987,
    //任何素数,需要计算,1987年是我的最爱:)
    最大值=50;
    //计算数字浮点精度所需的最大数字(10^n,其中n是点后的位数)
    如果(未分类){
    种子=未播种;
    }
    if(seed==null){
    //在你纠正我这个比较之前,请阅读安德里亚·贾马奇关于强迫的文章http://goo.gl/N4jCB  
    seed=(新日期()).getTime();
    //如果没有种子,请使用时间戳
    }
    返回{
    下一步:功能(最小值、最大值){
    种子*=常数;
    种子+=质数;
    返回最小值和最大值?最小值+种子百分比最大值/最大值*(最大值-最小值):种子百分比最大值/最大值;
    //如果未提供“最小”和“最大”,则返回0和1之间的随机数
    }
    }
    }
    var rng=CustomRandom(09031887),
    //使用“09031887”作为种子?
    pre=document.getElementById('out');
    pre.textContent+=rng.next()++'\n';
    pre.textContent+=rng.next()
    
    这是我使用David Bau的脚本(seedrandom.js)得到的最接近的结果:

    
    您的出生日期:
    日期: 日期010203040506070809109111213141516171819202122232425262728293031 月份: 月01020304050607080910112 年份: 年份20152014201201220112010200920082007200620052004200200201200019991998199719961995199419931992199119901989198819871986198519841983198219811980197919781977197619751976197519761975197419731972197197019701970197919681967196719661965196419621961960

    / / / / / / / / /

    生成 函数生成(){ //以数字形式获取用户的出生日期 var day=(document.getElementById(“day”).value); var month=(document.getElementById(“month”).value); var year=(document.getElementById(“year”).value); var dob=(日+月+年); //检查用户是否指定了dob 如果(isNaN(日)| isNaN(月)| isNaN(年)) { 警告(“检查您的出生日期!”); } 否则{ //将Math.random设置为基于ARC4的PRNG,该PRNG使用 //当前时间、dom状态和其他累积的局部熵。 //返回生成的种子字符串。 Math.seedrandom(); //自定义种子是用户的dob nr1.textContent=(数学随机(dob)); nr2.textContent=(数学随机(dob)); nr3.textContent=(数学随机(dob)); nr4.textContent=(数学随机(dob)); nr5.textContent=(数学随机(dob)); nr6.textContent=(数学随机(dob)); nr7.textContent=(数学随机(dob)); nr8.textContent=(数学随机(dob)); nr9.textContent=(数学随机(dob)); nr10.textContent=(数学随机(dob)); } }

    现在我只需要将所有的数字转换成从1到50的整数(类似于minmax)。有人知道怎么做吗?>请随意使用此选项:

    问题到底出在哪里?到目前为止你尝试了什么?发布一个jsfiddle在一个范围内创建一个随机整数很简单,但是正如您所看到的,使用这个内置函数无法控制
    seed
    。mo也是如此
    <script src="//cdnjs.cloudflare.com/ajax/libs/seedrandom/2.4.0/seedrandom.min.js">
    </script>
    <b>Your birth date:</b><br>
    Day: 
    <select id="day">
    <option selected="selected">day</option><option value="1">01</option><option value="2">02</option><option value="3">03</option><option value="4">04</option><option value="5">05</option><option value="6">06</option><option value="7">07</option><option value="8">08</option><option value="9">09</option><option>10</option><option>11</option><option>12</option><option>13</option><option>14</option><option>15</option><option>16</option><option>17</option><option>18</option><option>19</option><option>20</option><option>21</option><option>22</option><option>23</option><option>24</option><option>25</option><option>26</option><option>27</option><option>28</option><option>29</option><option>30</option><option>31</option>
    </select>
    Month:
    <select id="month">
    <option selected="selected">month</option><option value="1">01</option><option value="2">02</option><option value="3">03</option><option value="4">04</option><option value="5">05</option><option value="6">06</option><option value="7">07</option><option value="8">08</option><option value="9">09</option><option>10</option><option>11</option><option>12</option>
    </select>
    Year: 
    <select id="year">
    <option selected="selected">year</option><option>2015</option><option>2014</option><option>2013</option><option>2012</option><option>2011</option><option>2010</option><option>2009</option><option>2008</option><option>2007</option><option>2006</option><option>2005</option><option>2004</option><option>2003</option><option>2002</option><option>2001</option><option>2000</option><option>1999</option><option>1998</option><option>1997</option><option>1996</option><option>1995</option><option>1994</option><option>1993</option><option>1992</option><option>1991</option><option>1990</option><option>1989</option><option>1988</option><option>1987</option><option>1986</option><option>1985</option><option>1984</option><option>1983</option><option>1982</option><option>1981</option><option>1980</option><option>1979</option><option>1978</option><option>1977</option><option>1976</option><option>1975</option><option>1976</option><option>1975</option><option>1976</option><option>1975</option><option>1974</option><option>1973</option><option>1972</option><option>1971</option><option>1970</option><option>1969</option><option>1968</option><option>1967</option><option>1966</option><option>1965</option><option>1964</option><option>1963</option><option>1962</option><option>1961</option><option>1960</option>
    </select>
    
    <br><br>
    
    <span id="nr1"></span> / 
    <span id="nr2"></span> / 
    <span id="nr3"></span> / 
    <span id="nr4"></span> / 
    <span id="nr5"></span> / 
    <span id="nr6"></span> / 
    <span id="nr7"></span> / 
    <span id="nr8"></span> / 
    <span id="nr9"></span> / 
    <span id="nr10"></span>
    <br><br>
    
    <button onclick="generate()">Generate</button>
    
    <script type="text/javascript">
    function generate() {
        // get user's birth date as a number
        var day = (document.getElementById("day").value);
        var month = (document.getElementById("month").value);
        var year = (document.getElementById("year").value);
        var dob = (day+month+year);
    
        //check if user specified dob
        if(isNaN(day) || isNaN(month) || isNaN(year))
       {
        alert("Check your birth date!");
       }
        else {
        // Sets Math.random to an ARC4-based PRNG that is autoseeded using the
        // current time, dom state, and other accumulated local entropy.
        // The generated seed string is returned.
        Math.seedrandom();
    
        //the custom seed is the user's dob
        nr1.textContent = (Math.random(dob));
        nr2.textContent = (Math.random(dob));
        nr3.textContent = (Math.random(dob));
        nr4.textContent = (Math.random(dob));
        nr5.textContent = (Math.random(dob));
        nr6.textContent = (Math.random(dob));
        nr7.textContent = (Math.random(dob));
        nr8.textContent = (Math.random(dob));
        nr9.textContent = (Math.random(dob));
        nr10.textContent = (Math.random(dob));
       }
    }
    </script>