【发布时间】:2015-08-25 09:08:37
【问题描述】:
我开始学习 JavaScript,发现这篇文章:http://michalbe.blogspot.ro/2011/02/javascript-random-numbers-with-custom.html
我喜欢自定义种子编号生成器的想法,但我看在 Thor 的份上,无法弄清楚,如果更简单的话,我真的需要一个用纯 javascript 或 jQuery 之类的库完成的实际示例。
我们开始:
所以我想要生成由“-”(减号)分隔的 10 个不同的数字,每个数字的范围为 1-50,我希望每个数字的种子通过乘以 2 来组成:
- 以尽可能大的数字序列表示当前时间(每个数字延迟 1 秒,因此时间会有所不同)
- 您的出生日期(来自 3 个选择输入)
[!] 另外我想知道我们如何以不同的方式为这 10 个数字的生成设置动画,例如...例如旧火车站到达/出发机械显示器的动画,或者喜欢不同的 HTML5 画布粒子技术或 CSS3 或其他任何东西。 - 如果您认为太多,可以在另一个问题中完成。
如果你能帮我解决这个问题,我将永远感激不尽!
谢谢!
var CustomRandom = function(nseed) {
var seed,
constant = Math.pow(2, 13)+1,
prime = 1987,
//any prime number, needed for calculations, 1987 is my favorite:)
maximum = 50;
//maximum number needed for calculation the float precision of the numbers (10^n where n is number of digits after dot)
if (nseed) {
seed = nseed;
}
if (seed == null) {
//before you will correct me in this comparison, read Andrea Giammarchi's text about coercion http://goo.gl/N4jCB
seed = (new Date()).getTime();
//if there is no seed, use timestamp
}
return {
next : function(min, max) {
seed *= constant;
seed += prime;
return min && max ? min+seed%maximum/maximum*(max-min) : seed%maximum/maximum;
// if 'min' and 'max' are not provided, return random number between 0 & 1
}
}
}
var rng = CustomRandom(09031887);
//use '09031887' as a seed ?
rng.next();
rng.next();
});
<b>Your birth date:</b><br>
Day:
<select id="day">
<option selected="selected">01</option>
<option>02</option><option>03</option><option>04</option><option>05</option><option>06</option><option>07</option><option>08</option><option>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">01</option>
<option>02</option><option>03</option><option>04</option><option>05</option><option>06</option><option>07</option><option>08</option><option>09</option><option>10</option><option>11</option><option>12</option>
</select>
Year:
<select id="year">
<option selected="selected">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>
</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>Generate</button>
【问题讨论】:
-
问题到底出在哪里?到目前为止你尝试了什么?发布一个 jsfiddle
-
在一个范围内创建一个随机整数很简单Math.random,但正如您所见,没有办法用这个内置函数控制
seed。现代的Crypto.getRandomValues 也是如此,如果seed是必须的,那么您将不得不查看第三方库(或自己编写)。 -
我还没有设法使文章中的那个工作,所以我真的没有任何东西,我只有一些用于输出的 HTML。这就是为什么我要一个实际的例子:(
-
向我们展示您无法开始工作的代码,以及似乎出了什么问题,然后我们可以就如何纠正它为您提供建议。
-
这是我所拥有的:jsfiddle.net/cunuqq7h
标签: javascript random numbers generator seed