자바스크립트
본문
var empty = new Array();
var same = new Array();
var count = 0;
for (var a = 0; a < 100; a++) {
var result = Math.floor(Math.random() * 45) + 1;
empty[a] = result; //empty = [a,b,c,..100]
}
for(var b=0; b<100; b++){
for(var c=b+1; c<100; c++){
if(empty[b]==empty[c])
//0~45까지 숫자들 중에 100개를 랜덤으로 뽑아서 가장 많이 나온 숫자를 출력하고 싶은데 어떻게 해야할까요?
}
}
0~45까지 숫자들 중에 100개를 랜덤으로 뽑아서 가장 많이 나온 숫자를 출력하고 싶은데 어떻게 해야할까요?
답변 3
원하시는 것이 100개의 숫자 중, 가장 많이 나온 숫자를 구하는 것?? 맞나요?? ^^;;
랜덤이기 때문에 가장 많이 나온 숫자는 여러개 일 수 있을 것 같아요.
가장 많이 나온 숫자들은 아래 스크립트 참조하여 주세요.
콘솔log로 찍힌 결과를 확인하시면 될 것 같아요.
만약 가장 많이 나온 숫자 중 첫번째 한개를 구할 경우,
getAllKeys()의 if문에 break를 넣어 주세요.
도움이 되셨으면 좋겠습니다.
<script>
var counts = {};
var idx = 0;
for (var a = 0; a < 100; a++) {
var num = Math.floor(Math.random() * 45) + 1;
counts[num] = counts[num] ? counts[num] + 1 : 1;
}
function getAllKeys(arr, max_val) {
let result = [];
for (let key in arr) {
if (arr[key] == max_val) {
result.push(key);
//break;
}
}
return result;
}
var arrayAllMaxKeys = function(array){
return getAllKeys(array, Math.max.apply(null, Object.values(array)));
}
//console.log(counts);
//console.log(arrayAllMaxKeys(counts));
</script>
실제로는 랜덤으로 하나의 숫자를 뽑는것과 동일한 효과가 있습니다.
for 문으로는 안되는데.. 이유는 모르겠네요..
$data = array();
$data[mt_rand(0,45)]++;
$data[mt_rand(0,45)]++;
$data[mt_rand(0,45)]++;
~~~~ 100개 나열 ~~~~~
$data[mt_rand(0,45)]++;
arsort($data);
print_r($data);
echo '<hr>';
echo key($data);
<script>
var data = new Array();
for(i=0; i<100; i++) {
var ram = Math.random();
var num = Math.floor( ram * 45 );
var val = data[num];
if(!val) val = 0;
data[num] = parseInt(val) + 1;
//document.write( data[num] + '<br>' );
}
for(var i=0;i<data.length;i++){ //배열 출력
document.write(i + '=>' + data[i]+"<br>");
}
</script>
정렬 부분은 아래 참조..