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