예를 들어, JavaScript 로 지정된 두 변수 사이의 정수로 임의적입니까 발령합니다 어떻게 'x = y = 8' 모든 '4' 와 '죽이려하겠어요 출력입니다 4, 5, 6, 7, 8'?
Mozilla Developer Network 에서 몇 가지 예제를 페이지:
/**
* Returns a random number between min (inclusive) and max (exclusive)
*/
function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
}
/**
* Returns a random integer between min (inclusive) and max (inclusive).
* The value is no lower than min (or the next integer greater than min
* if min isn't an integer) and no greater than max (or the next integer
* lower than max if max isn't an integer).
* Using Math.round() will give you a non-uniform distribution!
*/
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
< hr>;
마테오랭동 () '숫자' 0 'a' (포함) 과 1 사이의 되돌려줍니다 (독점). 그래서 우리는 간격에 다음과 같습니다.
[0 .................................... 1)
이제 we& # 39 분 '와' 맥스 ' (포함),' d like a 사이의 숫자 (단독):
[0 .................................... 1)
[min .................................. max)
우리는 '를 사용할 수 있는' 마테오랭동 내려받습니다 기자 [최소, 최대) 간격. 그러나 첫 번째 '조금' 를 통해 우리 팩터에서의 문제를 뺀 분 간격.
[0 .................................... 1)
[min - min ............................ max - min)
따라서:
[0 .................................... 1)
[0 .................................... max - min)
우리는 이제 '다음' 마테오랭동 적용하십시오 계산하는 기자. # 39 의 let& 난수를 선택합니다.
Math.random()
|
[0 .................................... 1)
[0 .................................... max - min)
|
x (what we need)
따라서 찾기 위해, 'x' 할 것 "이라고 말했다.
x = Math.random() * (max - min);
x = Math.random() * (max - min) + min;
첫 번째 함수은 매든 에서 있는 것으로 알려졌다. 두 번째 '와' 최대 ',' 최소 정수를 되돌려줍니다 모두 포함).
이제 정수 가져오는 '또는' 바닥 ',' 차 ',' ceil 사용할 수 있습니다.
'마스트로런드 사용할 수 있습니다 (마테오랭동 () * (max - 분)) 는, 그러나 심지어 비사양 + 최소' 이 된다. 둘 다 '분' 와 '맥스' 가 있을 수 있는 기회를 약 절반 선보일 예정이다.
min...min+0.5...min+1...min+1.5 ... max-0.5....max
└───┬───┘└────────┬───────┘└───── ... ─────┘└───┬──┘ ← Math.round()
min min+1 max
'맥스' 가 함께 대상에서 제외돼 있는 것보다 더 기회를 롤 '분 간격, 정보기술 (it)'.
마테오프루어 (마테오랭동 () * (max - 최소 +1) '와' you have a + 최소 분배란 완벽하게 했다.
min.... min+1... min+2 ... max-1... max.... max+1 (is excluded from interval)
| | | | | |
└───┬───┘└───┬───┘└─── ... ┘└───┬───┘└───┬───┘ ← Math.floor()
min min+1 max-1 max
Ceil () '와' - ',' t # 39 너회가 can& 사용할 수 있는 기회를 가지고 있기 때문에 방정식입니다 맥스야 '지금' 롤 (roll) 을 조금 덜 수 있지만 (필요없는) '결과' 1 분 너무.
Mizilla 에서 Developer Network 문서:
// Returns a random integer between min (include) and max (include)
Math.floor(Math.random() * (max - min + 1)) + min;
유용한 (예:
// 0 - 10
Math.floor(Math.random() * 11);
// 1 - 10
Math.floor(Math.random() * 10) + 1;
// 5 - 20
Math.floor(Math.random() * 16) + 5;
// -10 - (-2)
Math.floor(Math.random() * 9) - 10;
function getRandomizer(bottom, top) {
return function() {
return Math.floor( Math.random() * ( 1 + top - bottom ) ) + bottom;
}
}
사용법:
var rollDie = getRandomizer( 1, 6 );
var results = ""
for ( var i = 0; i<1000; i++ ) {
results += rollDie() + " "; //make a string filled with 1000 random numbers in the range 1-6.
}
구조:
우리는 반환하는 함수 (차입) 에서 함수형 프로그래밍) 될 때, 임의의 정수 사이의 값을 불렀으매 반환되므로 '아래' 와 '상위' 포함). 우리는 # 39, & # 39 라고 inclusive&. 왜냐하면 우리는 모두 포함할 수 있는 범위 내의 숫자임 있는 상단형 반환되었습니다. (1, 6) ',' 이런 식으로 제란도미저 반환되므로 인컨텍스트 1, 2, 3, 4, 5, 6 을.
(bottom) 은 더 큰 숫자가 낮을수록, 상단형 번호임)
Math.random() * ( 1 + top - bottom )
마테오랭동 () ',' 만약 우리가 이 0 과 1 사이의 임의의 되돌려줍니다 연산뿐 곱합니다 아래쪽 ',' 와 '의 탑 1 씩 차이가 아니라,' 0 '와' ll get a # 39 we& 연산뿐 사이로 1 + b 는 '.
Math.floor( Math.random() * ( 1 + top - bottom ) )
'수' 발 아래로 마테오프루어 가장 가까운 정수. 그래서 이제 모든 정수 사이의 '0' 와 '위 / 아래로'. 헷갈리게 하는 것, 하지만 우리는 항상 1 있을 수 있기 때문에 사실 그것 없이는 결코 도달할 수 있기 때문에, 위에서 아래로 둥글리기. 우리가 할 수 있는 범위 내의 임의의 소수 생성할 수 있도록 '0' ' (1 + 위 / 아래로)' 를 '위 / 아래로 내려 받을 수 있는' 라운드 maxvalorarray int '0'
Math.floor( Math.random() * ( 1 + top - bottom ) ) + bottom
코드 범위 내의 정수 '0' 와 '우리 제공했음 앞의 예에서 우리는 우리가 해야 할 수 있는' 는 '지금', 즉 모든 위 / 아래로 추가할 수 있는 범위 내의 정수 '때문에' 와 '상위' 포함). D
참고: 통과될 경우, ll get a 보다 먼저 비사양 정수 값이거나 수 있지만, 어느 누구도 원하지 않는 비헤이비어를 you& # 39 한 동굴 꽂으십시오 인수 확인 요청합니다 실로나는 않을 것이라면서 그 의도가 아니라 원래 질문은 코드 거리가 멀다.
난수를 반품하십시오 1 부터 10:
Math.floor((Math.random()*10) + 1);
난수를 반품하십시오 1 부터 100:
Math.floor((Math.random()*100) + 1)
필요한 경우 최대 변수 0-사이의 사용할 수 있습니다.
Math.floor(Math.random() * max);
function randomNumber(minimum, maximum){
return Math.round( Math.random() * (maximum - minimum) + minimum);
}
console.log(randomNumber(0,1)); # 0 1 1 0 1 0
console.log(randomNumber(5,6)); # 5 6 6 5 5 6
console.log(randomNumber(3,-1)); # 1 3 1 -1 -1 -1
Ms 닷넷 슬라이드에서는 무순서 구현 클래스를 자바스크립트 -
var Random = (function () {
function Random(Seed) {
if (!Seed) {
Seed = this.milliseconds();
}
this.SeedArray = [];
for (var i = 0; i < 56; i++)
this.SeedArray.push(0);
var num = (Seed == -2147483648) ? 2147483647 : Math.abs(Seed);
var num2 = 161803398 - num;
this.SeedArray[55] = num2;
var num3 = 1;
for (var i_1 = 1; i_1 < 55; i_1++) {
var num4 = 21 * i_1 % 55;
this.SeedArray[num4] = num3;
num3 = num2 - num3;
if (num3 < 0) {
num3 += 2147483647;
}
num2 = this.SeedArray[num4];
}
for (var j = 1; j < 5; j++) {
for (var k = 1; k < 56; k++) {
this.SeedArray[k] -= this.SeedArray[1 + (k + 30) % 55];
if (this.SeedArray[k] < 0) {
this.SeedArray[k] += 2147483647;
}
}
}
this.inext = 0;
this.inextp = 21;
Seed = 1;
}
Random.prototype.milliseconds = function () {
var str = new Date().valueOf().toString();
return parseInt(str.substr(str.length - 6));
};
Random.prototype.InternalSample = function () {
var num = this.inext;
var num2 = this.inextp;
if (++num >= 56) {
num = 1;
}
if (++num2 >= 56) {
num2 = 1;
}
var num3 = this.SeedArray[num] - this.SeedArray[num2];
if (num3 == 2147483647) {
num3--;
}
if (num3 < 0) {
num3 += 2147483647;
}
this.SeedArray[num] = num3;
this.inext = num;
this.inextp = num2;
return num3;
};
Random.prototype.Sample = function () {
return this.InternalSample() * 4.6566128752457969E-10;
};
Random.prototype.GetSampleForLargeRange = function () {
var num = this.InternalSample();
var flag = this.InternalSample() % 2 == 0;
if (flag) {
num = -num;
}
var num2 = num;
num2 += 2147483646.0;
return num2 / 4294967293.0;
};
Random.prototype.Next = function (minValue, maxValue) {
if (!minValue && !maxValue)
return this.InternalSample();
var num = maxValue - minValue;
if (num <= 2147483647) {
return parseInt((this.Sample() * num + minValue).toFixed(0));
}
return this.GetSampleForLargeRange() * num + minValue;
};
Random.prototype.NextDouble = function () {
return this.Sample();
};
Random.prototype.NextBytes = function (buffer) {
for (var i = 0; i < buffer.length; i++) {
buffer[i] = this.InternalSample() % 256;
}
};
return Random;
}());
var r = new Random();
var nextInt = r.Next(1, 100); //returns an integer between range
var nextDbl = r.NextDouble(); //returns a random decimal
function rnd(min,max){
return Math.floor(Math.random()*(max-min+1)+min );
}
컴퓨터 프로그램, 난수 생성 후 사용하는 번호 그대로 무자비한 고려해보십시오 부품이라면 또는 전체 중 하나를 선택할 수 있는 경우 초기 하나. 무자비한 비판을 받아들일 수 없는 신앙이니라 전송되었기 변경된 후, 그들은 그것을 number. 바이어스됨 연락할 수 있는 프로그램을 개발할 수 있지만, 이 경우 단순 작업을 하지 않을 경우 고려해야 합니다. 프로그램 개발을 위한 신앙이니라 틀렸다니까 난수를 생성할 수 있는 귀중한 물건을 프로그램 또는 도박 게임, 복권 등 그런후에도 너회의 프로그램 에서 거부됩니다 않을 경우 위의 case. 고려해보십시오 정보 관리
따라서, 이러한 종류의 사람이 바로 내 제안에:
난수를 생성할 마테오랭동 () 를 사용하여 ' (' n '라고 이)'.
Now for [0,10) ==> n*10 (i.e. one digit) and for[10,100) ==> n*100 (i.e. two digits) and so on. Here squire bracket indicates that boundary is inclusive and round bracket indicates boundary is exclusive.
Then remove the rest after the decimal point. (i.e. get floor) - using Math.floor(), this can be done.
임의의 숫자를 읽을 줄 아는 경우 테이블 위에 난수를 좀 알 수 있듯이, 프로세스 (1 씩 증가하고, 10, 100 등) 에서 언급한 것은 처음부터 한 거라고 판단했다. (소수점 대신 변경 때문에 해당.)
다음 예에서는 이 연구 및 개발 요구에.
필요할 경우 다음 층에서 n1 샘플링합니다 [0.9] [0.99] 답이 및 필요한 경우 그 층에서 n10 답이 및 드릴링됩니다.
그럼 지금부터 들어갈 사용자 역할:
그래서 고려해보십시오 범위 = >. [78dbm, 247] 여러 가지 요소 중 247 - 78dbm maxvalorarray 170tb + 1 =, = (이후 모두 경계는 포함).
/*Mthod 1:*/
var i = 78, j = 247, k = 170, a = [], b = [], c, d, e, f, l = 0;
for(; i <= j; i++){ a.push(i); }
while(l < 170){
c = Math.random()*100; c = Math.floor(c);
d = Math.random()*100; d = Math.floor(d);
b.push(a[c]); e = c + d;
if((b.length != k) && (e < k)){ b.push(a[e]); }
l = b.length;
}
console.log('Method 1:');
console.log(b);
/*Method 2:*/
var a, b, c, d = [], l = 0;
while(l < 170){
a = Math.random()*100; a = Math.floor(a);
b = Math.random()*100; b = Math.floor(b);
c = a + b;
if(c <= 247 || c >= 78){ d.push(c); }else{ d.push(a); }
l = d.length;
}
console.log('Method 2:');
console.log(d);
참고: 방법 1 에서 먼저 내가 만든 후 임의로 포함된 번호가 어레이에서는 필요한 둘 다른 영역으로 어레이입니다. 방법 2 에서 확인할 수 있는 범위를 임의로 발령합니다 숫자임, 이들은 합니다. 그럼 어레이에서는 넣습니다. 나는 여기서 생성된 무작위 숫자와 그 두 프로그램 모두 사용할 수 있는 유용한 고장율 최대화합니다 속도용 부담을 최소화하면서 얻는 수입니다. 그러나 일부 비아세니스 열거하십시오 숫자임 생성할지 추가 될 수 있다. 그래서 난 내 첫 번째 방법은 특정 범위 내에서 추천합니까 난수 생성.
이 두 가지 방법, 콘솔이 결과를 보여줄 것입니다. (f12 키를 누릅니다 열 수 있는 크롬 콘솔)
임의의 정수 (범위, kingdome. seattle. 시도하시겠습니까:
function random(minimum, maximum) {
var bool = true;
while (bool) {
var number = (Math.floor(Math.random() * maximum + 1) + minimum);
if (number > 20) {
bool = true;
} else {
bool = false;
}
}
return number;
}
1 부터 6 afaq 난수를 말하도다 먼저 해야 할 것:
0.5 + (Math.random() * ((6 - 1) + 1))
이 숫자는 6 그리곤요 곱합니다 임의적입니까 자도으로 0.5 예정이다. 다음 라운드 많은 양의 정수 수행여:
Math.round(0.5 + (Math.random() * ((6 - 1) + 1))
이 라운드 명으로 가장 근접한 정수를.
또는 좀 더 쉽게 이해할 수 있는 됩니다.
var value = 0.5 + (Math.random() * ((6 - 1) + 1))
var roll = Math.round(value);
return roll;
일반적으로 이 변수를 사용하여 코드 할 수 있다.
var value = (Min - 0.5) + (Math.random() * ((Max - Min) + 1))
var roll = Math.round(value);
return roll;
그 이유는 빼냅니다 0.5 에서 사용하는 데 최소값이 내려졌단 최소값이 죽이려하겠어요 가져올 수 있기 때문에 그것은 한 개 이상의 정수 너회의 최대값인. 등을 이용하여 0.5 에서 최소값이 틀렸다니까 근본적으로 막는 최대값인 반올림할 에서 공개되었다.
다음과 같은 코드를 사용하여 일정한 범위 없이 리피팅, 난수 어레이입니다 생성할 수 있습니다.
function genRandomNumber(how_many_number,min,max) {
// parameters
// how_many_number : how many numbers you want to generate. For example it is 5.
// min(inclusive) : minimum/low value of a range. it must be any positive integer but less than max. i.e 4
// max(inclusive) : maximun value of a range. it must be any positive integer. i.e 50
// return type: array
var random_number = [];
for (var i = 0; i < how_many_number; i++) {
var gen_num = parseInt((Math.random() * (max-min+1)) + min);
do {
var is_exist = random_number.indexOf(gen_num);
if (is_exist >= 0) {
gen_num = parseInt((Math.random() * (max-min+1)) + min);
}
else {
random_number.push(gen_num);
is_exist = -2;
}
}
while (is_exist > -1);
}
document.getElementById('box').innerHTML = random_number;
}
function getRandomInt(lower, upper)
{
//to create an even sample distribution
return Math.floor(lower + (Math.random() * (upper - lower + 1)));
//to produce an uneven sample distribution
//return Math.round(lower + (Math.random() * (upper - lower)));
//to exclude the max value from the possible values
//return Math.floor(lower + (Math.random() * (upper - lower)));
}
이 기능을 테스트하려면 HTML / JavaScript 파일로 저장 및 변경, 이 함수의 아래 있지만브라우저에 개방. 코드 a 분포됩니다 보여주는 1 백만 함수 호출을 그래프화합니다 생산할 예정이다. 또한, 만일 이 함수는 코드를 기록하십시오 면쪽 건 보다 큰 값을 얻을 수 있는 최대, 또는 보다 최소, you.will.know.about.it.
<html>
<head>
<script type="text/javascript">
function getRandomInt(lower, upper)
{
//to create an even sample distribution
return Math.floor(lower + (Math.random() * (upper - lower + 1)));
//to produce an uneven sample distribution
//return Math.round(lower + (Math.random() * (upper - lower)));
//to exclude the max value from the possible values
//return Math.floor(lower + (Math.random() * (upper - lower)));
}
var min = -5;
var max = 5;
var array = new Array();
for(var i = 0; i <= (max - min) + 2; i++) {
array.push(0);
}
for(var i = 0; i < 1000000; i++) {
var random = getRandomInt(min, max);
array[random - min + 1]++;
}
var maxSample = 0;
for(var i = 0; i < max - min; i++) {
maxSample = Math.max(maxSample, array[i]);
}
//create a bar graph to show the sample distribution
var maxHeight = 500;
for(var i = 0; i <= (max - min) + 2; i++) {
var sampleHeight = (array[i]/maxSample) * maxHeight;
document.write('<span style="display:inline-block;color:'+(sampleHeight == 0 ? 'black' : 'white')+';background-color:black;height:'+sampleHeight+'px"> [' + (i + min - 1) + ']: '+array[i]+'</span> ');
}
document.write('<hr/>');
</script>
</head>
<body>
</body>
</html>
function random(high,low) {
high++;
return Math.floor((Math.random())*(high-low))+low;
}
실행하십시오 high++ 마테오랭동 () '는' 우리가 '때문에' (포함), 0 과 1 사이의, 난수 (단독) 를 1 씩 높은 실행하기 전에 우리가 먼저 증가되지는 하나는 제외된 것은 하나님은 우리에게 주는 것이 가장 많은 수인 수학이요 subtract 낮음입니다 높은 곳에서 낮은 후 다시 정상으로 만들어 왔습니다 - +low 생성할 수 이상의 높은 가장 낮은 낮음입니다. 그리고 우리는 그 번호를 반품해야
랜덤 (7.3) ',' 7 '또는' 3.4,5.6 돌아갈 수 있었다
예입니다 자바스크립트 함수를 사용하지 않고 모든 난수를 생성할 수 있는 길이 지정되었습니까 : 마테오랭동 ()
function genRandom(length)
{
const t1 = new Date().getMilliseconds();
var min = "1",max = "9";
var result;
var numLength = length;
if (numLength != 0)
{
for (var i = 1; i < numLength; i++)
{
min = min.toString() + "0";
max = max.toString() + "9";
}
}
else
{
min = 0;
max = 0;
return;
}
for (var i = min; i <= max; i++)
{
//Empty Loop
}
const t2 = new Date().getMilliseconds();
console.log(t2);
result = ((max - min)*t1)/t2;
console.log(result);
return result;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<script>
/*
assuming that window.crypto.getRandomValues is available
the real range would be fron 0 to 1,998 instead of 0 to 2,000
See javascript documentation for explanation
https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues
*/
var array = new Uint8Array(2);
window.crypto.getRandomValues(array);
console.log(array[0] + array[1]);
</script>
</body>
</html>
최대 3 자리 숫자로 접수됨 uint8array 생성하시겠습니까 어레이입니다 될 수 있는 최대 999. 이 코드는 매우 짧다.