OVH Cloud OVH Cloud

tableau de nombres aléatoires

3 réponses
Avatar
DaD
Bonjour,
A chaque rechargement d'une page -location.reload()-, je désire placer
dans un tableau -var montableau=Array(15)- tous les nombres de 0 à 14,
placés aléatoirement et donc sans doublon.
Quelqu'un aurait-il un script opérationnel ?
Merci et cordialement,
DaD

3 réponses

Avatar
ASM
Bonjour,
A chaque rechargement d'une page -location.reload()-, je désire placer
dans un tableau -var montableau=Array(15)- tous les nombres de 0 à 14,
placés aléatoirement et donc sans doublon.
Quelqu'un aurait-il un script opérationnel ?


<script type="text/javascript">
var i=0, max;
var T = new Array()
function alea() {
var x = Math.floor(Math.random()*max);
if(x>=0 && x<max)
{
var ok = true;
for(var j=0;j<T.length;j++) if(x==T[j]) ok = false;
if(ok) T[T.length] = x;
}
if(T.length<max) alea();
else alert('tableau fini =n'+T);
}
onload = alea;
</script>

--
Stephane Moriaux et son [moins] vieux Mac

Avatar
DaD
Bonjour,
A chaque rechargement d'une page -location.reload()-, je désire placer dans
un tableau -var montableau=Array(15)- tous les nombres de 0 à 14, placés
aléatoirement et donc sans doublon.
Quelqu'un aurait-il un script opérationnel ?


<script type="text/javascript">
var i=0, max;
var T = new Array()
function alea() {
var x = Math.floor(Math.random()*max);
if(x>=0 && x<max)
{
var ok = true;
for(var j=0;j<T.length;j++) if(x==T[j]) ok = false;
if(ok) T[T.length] = x;
}
if(T.length<max) alea();
else alert('tableau fini =n'+T);
}
onload = alea;
</script>


Super, merci beaucoup Stéphane.
Cordialement,
DaD


Avatar
Dr John Stockton
JRS: In article <44de390e$0$858$, dated Sat, 12
Aug 2006 22:24:46 remote, seen in news:fr.comp.lang.javascript, ASM
posted :
Bonjour,
A chaque rechargement d'une page -location.reload()-, je désire placer
dans un tableau -var montableau=Array(15)- tous les nombres de 0 à 14,
placés aléatoirement et donc sans doublon.
Quelqu'un aurait-il un script opérationnel ?


<script type="text/javascript">
var i=0, max;
var T = new Array()
function alea() {
var x = Math.floor(Math.random()*max);
if(x>=0 && x<max)
{
var ok = true;
for(var j=0;j<T.length;j++) if(x==T[j]) ok = false;
if(ok) T[T.length] = x;
}
if(T.length<max) alea();
else alert('tableau fini =n'+T);
}
onload = alea;
</script>



Comme ca, pour chaque nombre on doit faire (en moyenne) demi du FOR
loop. C'est O(N^2).

Extrait de <URL:http://www.merlyn.demon.co.uk/js-randm.htm#SDFS> :

function Deal(N) { var J, K, Q = new Array(N)
for (J=0; J<N; J++) { K = Random(J+1) ; Q[J] = Q[K] ; Q[K] = J }
return Q }

Plus court, plus vite (O(N), Knuth.

Lisez le c.l.j FAQ.
--
© John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v4.00 IE 4 ©
<URL:http://www.jibbering.com/faq/>? JL/RC: FAQ of news:comp.lang.javascript
<URL:http://www.merlyn.demon.co.uk/js-index.htm> jscr maths, dates, sources.
<URL:http://www.merlyn.demon.co.uk/> TP/BP/Delphi/jscr/&c, FAQ items, links.