Page 1 of 2
De l'aléatoire avec Ndless

Posted:
25 Apr 2011, 19:05
by Chockosta
Bonjour,
Je programme avec Ndless, et j'aurais besoin d'une simple fonction aléatoire.
Seulement : où trouver une graine pour initialiser ?
Merci...
Re: De l'aléatoire avec Ndless

Posted:
25 Apr 2011, 19:26
by critor
Tu peux prendre toujours la même graine (0 par exemple), ou la baser sur l'heure courante (il y a bien le cristal en question dans la Nspire).
Re: De l'aléatoire avec Ndless

Posted:
26 Apr 2011, 08:56
by Chockosta
Ça je m'en doute

J'ai mal formulé ma question.
Où, dans la mémoire, pourrais-je trouver un octet qui puisse servir de graine ? (genre le timer)
Re: De l'aléatoire avec Ndless

Posted:
26 Apr 2011, 09:53
by Lionel Debroux
Il y a trois timers, regarde sur Hackspire

:
Re: De l'aléatoire avec Ndless

Posted:
26 Apr 2011, 10:12
by Chockosta
Merci

Et... euh... j'ai honte...
Comment donner directement à un int une valeur contenue dans la mémoire ?
Du genre
- Code: Select all
uint32_t seed = *(90010000);
mais ça ne marche pas...
Re: De l'aléatoire avec Ndless

Posted:
26 Apr 2011, 10:25
by critor
C'est une adresse hexa?
Si oui:
- Code: Select all
uint32_t seed = *(0x90010000);
De plus, pour utiliser une adresse non allouée dans le programme, je crois qu'il faut le préfixe
volatile.
Re: De l'aléatoire avec Ndless

Posted:
26 Apr 2011, 10:40
by Chockosta
Ah oui... C'est juste.
(Honte à moi d'avoir oublié le 0x)
Mais...
- Code: Select all
uint32_t seed = *(volatile unsigned*) 0x90010000;
nemarche pass non plus, et la pourtant je vois pas pourquoi.
Le compilateur me dit :
initializer element is not constant
Re: De l'aléatoire avec Ndless

Posted:
26 Apr 2011, 12:39
by critor
Ton initialisation s'effectue où?
Dans une fonction/méthode? en dehors?
Re: De l'aléatoire avec Ndless

Posted:
26 Apr 2011, 12:54
by Chockosta
Variable globale...
Je peux la passer dans le main, et la passer en argument a ma fonction aléatoire...
Re: De l'aléatoire avec Ndless

Posted:
26 Apr 2011, 13:03
by Lionel Debroux
Oui, mais justement, tu ne peux pas l'initialiser comme ça - on n'est pas en Java, ici :;):
Il faut que tu l'initialises au début de ton main.