|
|
|
![]() |
|
Strumenti |
![]() |
#1 | |
Senior Member
Iscritto dal: Feb 2004
Messaggi: 427
|
[pascal] randomize.
Sapete di preciso la funzione di randomize in tale estinto linguaggio di programmazione?
ho fatto un esperimento con sto programmetto: Quote:
Mi sembra strana una funzione del genere... sapete dirmi come funziona esattamente? ed eventualmente per cosa viene usata? O_o
__________________
Ho trattato positivamente con: Crazy rider89, luigi864. |
|
![]() |
![]() |
![]() |
#2 | |
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16209
|
Re: [pascal] randomize.
Quote:
La chiamata a randomize inizializza il seme con un valore particolare; le varie chiamate a random calcolano il valore della trasformazione sul seme, sostituiscono il valore del seme con quello calcolato, e restituiscono il valore calcolato. Il problema è che randomize deve permetterti sia di inizializzare il seme sia con un valore che dici tu (o prefissato), per poter ripetere esattamente un esperimento; sia di inizializzarlo con un valore "preso a caso" (es. l'ora di avvio del programma) per avere comportamenti diversi a ogni esecuzione. A quanto pare, chiamando randomize senza argomenti, si ottiene il primo comportamento; e a te interessa il secondo. Qui però non ti so aiutare, anche perché non ricordo nemmeno se il Pascal standard prevede o no un generatore pseudorandom; leggi bene cosa dice il manuale del compilatore.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" ![]() Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1070
|
reminescenze del 3° anno (ossia 2 anni fa)...
dunque come prima cosa ti consiglio di mettere randomize all'esterno del ciclo repeat..until perchè è una funzione che serve come " a far girare il contenitore dei numeri casuali" (hai presente la tombola quando colui che ha il tombolone agita il sacchettino con i numeri...bene...immagina che sia l'attivazione del movimento del sacchettino). E forse proprio per questo motivo hai risultati inaspettati. poi veniamo alla valorizzazione delle variabili Codice:
b := random; { esce un numero reale compreso fra 0 e 1 } Codice:
c := random(12); { esce un numero intero compreso fra 0 e 1 } Codice:
d := 12+random; { esce un numero reale compreso fra 12 e 13 } Codice:
e := 2 + (5-2)*random; { esce un numero reale compreso fra 2 e 5 } Codice:
a := a + 1 ; Codice:
f := random; { esce un numero reale compreso fra 0 e 1 } non ho il pascal installato su questo pc, altrimenti l'avrei visionato ben volentieri. prendi con la dovuta cautela le mie motivazioni relative a random senza specificare l'intervallo, anche perchè questa funzione mi è capitata di usarla una volta sola quando feci un programma che simulava il gioco del master mind.
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Jul 2004
Città: Napoli
Messaggi: 2029
|
Re: [pascal] randomize.
Quote:
senza però la randomize (rimescolamento) prima il valore della variabile è costante. a questo serve randomize. n.b.:che feccia di linguaggio però molto didattico. ciauz |
|
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1070
|
Re: Re: [pascal] randomize.
Quote:
anche io due anni fa dicevo che era un brutto e inutile linguaggio. 2 anni dopo col senno del poi, penso mi sia servito. Un po' come il latino. Nessuno lo parla più oggi, ma ti apre la mente.
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond |
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Mar 2004
Messaggi: 1449
|
Re: Re: Re: [pascal] randomize.
Quote:
Ti permette di focalizzare le idee sugli aspetti generali della programmazione senza farti svenare troppo ad imparare cose complesse, tanto una volta acquisito il modus operandi diventa facile passare a linguaggi sicuramente più professionali ed utili. ![]()
__________________
Ciao ~ZeRO sTrEsS~ |
|
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1070
|
Re: Re: Re: Re: [pascal] randomize.
Quote:
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond |
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Jul 2004
Città: Napoli
Messaggi: 2029
|
Re: Re: Re: Re: Re: [pascal] randomize.
Quote:
studiando il c o c++ invece vedi che sono molto + complessi e utili. anchio agli inizi grazie al pascal ho imparato a programmare, ma penso che le scuole dovrebbero iniziare direttamente col C. per poi pèassare o al c++ o al java. N.b: il visual basic non è orientato ad oggetti, ho capito come intendi tu ma quelli sono oggetti già belli e fatti. in c++ è diversi: lo devi creare tu un command button. + che altro il visual basic è un linguaggio ad EVENTI. ciau Ultima modifica di ghiotto86 : 13-10-2004 alle 13:15. |
|
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1070
|
Re: Re: Re: Re: Re: Re: [pascal] randomize.
Quote:
mi hanno sempre detto che il visual basic è un linguaggio "object oriented" oppure "event driven". Il c++ lo studiamo (si fa per dire) in sistemi, utilizzando la comunicazione fra le porte ecc. Sono comunque d'accordo anche io che già in 3a superiore bisogna studiare il linguaggio c++.
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond |
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Feb 2004
Messaggi: 427
|
ehm... stiamo andando ot....
quello che ho notato è ke il randomize se inserito all'interno di un ciclo in tale ciclo assegna sempre lo stesso valore random a una variabile, mentre se non è all'interno del ciclo no, e questo mi pare strano xke tutte le volte che com incia il ciclo dovrebbe ripetere le operazioni daccapo. Non può essere una coincedenza, no. esempio... while j<2000 do begin randomize; clrscr; b:=random writeln('numero = ',b,''); end; qua dentro mi scrive sempre numero = 0,98686489.... vi rendete conto? per tutte e 2000 le volte....
__________________
Ho trattato positivamente con: Crazy rider89, luigi864. |
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Jun 2003
Città: Como
Messaggi: 5377
|
Quote:
per rispondere a tutti. la funzione random può essere utilizzata da sola cioè a:=random e la procedura randomize va messa una sola volta all'inizio del programma, non dentro un'iterazione. ciao! |
|
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Feb 2004
Messaggi: 427
|
si quello l'avevo capito ankio...
il perchè xo è oscuro ai più... e il prof ci ha invitati a scoprirlo... è una settimana che cerco ovunque... e mo ho kiesto qua.
__________________
Ho trattato positivamente con: Crazy rider89, luigi864. |
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1070
|
Quote:
ribadisco quello che ho detto nel primo mio reply. Penso si tratti della chiamata di una function predefinita pascal che ha il compito di mettere in movimento il meccansimo di generazione dei numeri casuali. Un esempio calzante a mio parere è quello del sacchettino della tombola, sempre presente nel mio reply.
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond |
|
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Feb 2004
Messaggi: 427
|
abbi pazienza...
quello che mi sembra di aver capito è che il randomize si "prende il sacchetto della tombola" e poi coi random comincia a tirare numeri a caso... q eui correggimi se sbaglio. Ma in un sacchettino della tombola c'è un numero solo? mi pare alquanto strano che venga SEMPRE lo STESSO numero
__________________
Ho trattato positivamente con: Crazy rider89, luigi864. |
![]() |
![]() |
![]() |
#15 | ||
Senior Member
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1070
|
si, hai ben compreso l'esempio del sacchettino della tombola.
Quello che volevo dire io, era la risposta alla 2a parte Quote:
Quote:
ciao
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond |
||
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Feb 2004
Messaggi: 427
|
ok, adesso che ci siamo messi d'accordo vediamo di chiarire il problema:
visto che lui col randomize prende il sacco della tombola, perchè se lo metto all'inizio di ogni ciclo ad una variabile a cui assegno un valore random all'interno del ciclo mi assegna sempre lo stesso valore? non dovrebbe prendere un "sacchetto nuovo" ogni volta?
__________________
Ho trattato positivamente con: Crazy rider89, luigi864. |
![]() |
![]() |
![]() |
#17 | |
Senior Member
Iscritto dal: Jul 2004
Città: Napoli
Messaggi: 2029
|
Quote:
inizialzates the built-in random number generator witch a random value (obtained form system colck). . . . the random number generator should be inizialized by making a call to Randomize, or by assigning a value to Randsend. richiamando sempre la randomize nel ciclo dovrebbe andare bene (infatti se fai il debug uscirà penso la sequenza casuale, prova), ma devi fare un'inizializzazione fuori dal ciclo. il pascal è un po rognoso su ciò, quindi non ti fare sti problemi. p.s: per le cose che ho scritto in inglese se non lo sapete IMPARATELO ![]() ciauz |
|
![]() |
![]() |
![]() |
#18 | |
Senior Member
Iscritto dal: Feb 2004
Messaggi: 427
|
Quote:
i problemi sono che a) non ho il turbo pascal ma il freepascal, mi pare cmqw chiaro che nn posso accedere all'help. b) nn sono seghe mentali mie ma del mio prof =P quindi il problema resta sempre PERCHE' non lo posso mettere all'interno del ciclo?
__________________
Ho trattato positivamente con: Crazy rider89, luigi864. |
|
![]() |
![]() |
![]() |
#19 | |
Senior Member
Iscritto dal: Jul 2004
Città: Napoli
Messaggi: 2029
|
Quote:
una spiegazione forse è che randomize rieseguite n volte nel ciclo forse ha un valore impostato che non cambia. 40 BHOOO |
|
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Dipende da come è implementata randomize...potrebbe generare il seme in base all'orologio di sistema... Essendo il ciclo eseguito velocemente inizializza il generatore pseudorandom ogni volta con los tesso seme...e quindi una chiamata a random con lo stesso seme genera sempre lo stesso numero
![]() In generale la randomize o la srand in C (che non a caso si inizializza con l'orologio di sistema) va chiamata una sola volta all'interno di tutto il programma... |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:37.