Numero random senza ripetizione di cifre
Moderatore: Moderatori
-
- Messaggi: 3616
- Iscritto il: sabato 7 febbraio 2004, 1:00
- Località: Roma
- Contatta:
Numero random senza ripetizione di cifre
Volevate un numero di cinque cifre tutte diverse dall'1 al 5 ?
Oppure un numero di cinque cifre tutte diverse dall'1 al 9 ?
Oppure ancora un numero di nove cifre tutte diverse dall'1 al 9 ?
Questa funzione personalizzata lo creerà per voi in modo "random"
Oppure un numero di cinque cifre tutte diverse dall'1 al 9 ?
Oppure ancora un numero di nove cifre tutte diverse dall'1 al 9 ?
Questa funzione personalizzata lo creerà per voi in modo "random"

Codice: Seleziona tutto
/*
NoRepDigit custom function
Author: Daniele Raybaudi
Format: NoRepDigit ( hightDigit ; digitCount )
Params:
hightDigit - number (max 9)
digitCount - number (max 9)
Result:
returns a random number of "digitCount" digits with all different digits from 1 to "hightDigit"
(produce in modalità random un numero di lunghezza: "digitCount" con cifre tutte diverse tra 1 e "hightDigit");
two examples (due esempi):
NoRepDigit ( 5 ; 5 ) may return (può produrre): 12345;
NoRepDigit ( 8 ; 5 ) may return (può produrre): 23781.
"digitCount" can't ever be highter than "hightDigit"
("digitCount" non deve mai essere superiore a "hightDigit")
the number returned has no zero inside
(il numero creato non conterrà alcun zero).
*/
Let ([
num = Int ( Random * hightDigit ) + 1 ;
next = digitCount - 1 ;
result = num
&
Case (
next ; NoRepDigit ( hightDigit ; next ) ;
""
)
];
Case (
digitCount > 9 or hightDigit > 9 or digitCount > hightDigit ; "error" ;
Length ( Filter ( result ; num ) ) > 1; NoRepDigit ( hightDigit ; digitCount ) ;// repeat the loop if the new digit isn't different (ricomincia da capo se una cifra si ripete)
result
)
)
Raybaudi FMP 12 Adv. Windows XP SP3
-
- Messaggi: 703
- Iscritto il: lunedì 5 gennaio 2004, 1:00
X Antonio,
in pratica raybaudi ti ha chiesto se ti necessita una funzione personalizzata che in modo casuale ti crea…
Procurati FM Advanced 7 o 8
Nuovo File
Vai al menù File – Definisci – Funzioni personalizzate
Nuovo
Al nome funzione scrivi: NoRepDigit
Nei parametri funzione scrivi: hightDigit
Poi schiaccia il tasto + e hightDigit viene inserito
Nei parametri funzione scrivi: digitCount
Poi schiaccia il tasto + e digitCount viene inserito
Nello spazio destinato al listato della formula devi inserire (per il copywright) tutto il codice che Daniele ha postato sul forum.
A titolo didattico il seguente listato è la formula vera e propria:
Let ([ num = Int ( Random * hightDigit ) + 1 ; next = digitCount - 1 ; result = num
& Case ( next ; NoRepDigit ( hightDigit ; next ) ; "" ) ];
Case ( digitCount > 9 or hightDigit > 9 or digitCount > hightDigit ; "error" ;
Length ( Filter ( result ; num ) ) > 1; NoRepDigit ( hightDigit ; digitCount ) ; result ) )
Definisci le disponibilità e poi OK.
Nel tuo FMA ti ritrovi con una funzione nuova chiamata NoRepDigit
Crea tre campi
1° hightDigit (numero)
2° digitCount (numero)
3° “come vuoi tu” (calcolato) il cui calcolo è: NoRepDigit ( hightDigit; digitCount )
inserisci i valori nei campi hightDigit e digitCount.
se rispetti i limiti imposti avrai il risultato atteso, in caso contrario “error”.
saluti.
in pratica raybaudi ti ha chiesto se ti necessita una funzione personalizzata che in modo casuale ti crea…
E di seguito ti scrive come scriverla. (ma non te lo spiega passo passo come farla)un numero di cinque cifre tutte diverse dall'1 al 5 ?
Oppure un numero di cinque cifre tutte diverse dall'1 al 9 ?
Oppure ancora un numero di nove cifre tutte diverse dall'1 al 9 ?
Procurati FM Advanced 7 o 8
Nuovo File
Vai al menù File – Definisci – Funzioni personalizzate
Nuovo
Al nome funzione scrivi: NoRepDigit
Nei parametri funzione scrivi: hightDigit
Poi schiaccia il tasto + e hightDigit viene inserito
Nei parametri funzione scrivi: digitCount
Poi schiaccia il tasto + e digitCount viene inserito
Nello spazio destinato al listato della formula devi inserire (per il copywright) tutto il codice che Daniele ha postato sul forum.
A titolo didattico il seguente listato è la formula vera e propria:
Let ([ num = Int ( Random * hightDigit ) + 1 ; next = digitCount - 1 ; result = num
& Case ( next ; NoRepDigit ( hightDigit ; next ) ; "" ) ];
Case ( digitCount > 9 or hightDigit > 9 or digitCount > hightDigit ; "error" ;
Length ( Filter ( result ; num ) ) > 1; NoRepDigit ( hightDigit ; digitCount ) ; result ) )
Definisci le disponibilità e poi OK.
Nel tuo FMA ti ritrovi con una funzione nuova chiamata NoRepDigit
Crea tre campi
1° hightDigit (numero)
2° digitCount (numero)
3° “come vuoi tu” (calcolato) il cui calcolo è: NoRepDigit ( hightDigit; digitCount )
inserisci i valori nei campi hightDigit e digitCount.
se rispetti i limiti imposti avrai il risultato atteso, in caso contrario “error”.
saluti.
-
- Messaggi: 703
- Iscritto il: lunedì 5 gennaio 2004, 1:00
dimenticavo...
scritta in italiano...
Consenti ([ variabile1 = Intero ( Casuale * hightDigit ) + 1 ; variabile2 = digitCount - 1 ; variabile3 = variabile1
& Casi ( variabile2 ; NoRepDigit ( hightDigit ; variabile2 ) ; "" ) ];
Casi ( digitCount > 9 or hightDigit > 9 or digitCount > hightDigit ; "error" ;
Lunghezza ( Filtro ( variabile3 ; variabile1 ) ) > 1; NoRepDigit ( hightDigit ; digitCount ) ; variabile3 ) )
...è 100% puro Filemaker.
saluti.
scritta in italiano...
Consenti ([ variabile1 = Intero ( Casuale * hightDigit ) + 1 ; variabile2 = digitCount - 1 ; variabile3 = variabile1
& Casi ( variabile2 ; NoRepDigit ( hightDigit ; variabile2 ) ; "" ) ];
Casi ( digitCount > 9 or hightDigit > 9 or digitCount > hightDigit ; "error" ;
Lunghezza ( Filtro ( variabile3 ; variabile1 ) ) > 1; NoRepDigit ( hightDigit ; digitCount ) ; variabile3 ) )
...è 100% puro Filemaker.
saluti.
-
- Messaggi: 1197
- Iscritto il: domenica 12 marzo 2006, 1:00
- Versione FileMaker: 18
- Sistema operativo: Win10
- Località: Reggio Calabria (RC)
-
- Messaggi: 703
- Iscritto il: lunedì 5 gennaio 2004, 1:00
Alt, Antonio
I ringraziamenti vanno fatti esclusivamente a raybaudi che ha postato la sua funzione personalizzata ed a cui porgo un mio personale grazie.
Io mi sono limitato “solo” a rendere più chiara l’informazione affinché potesse essere fruita da tutti e non esclusivamente dai più bravi.
“filosofia”, la mia, che si ritrova in altri miei post in cui ho messo a disposizione degli gli utenti “meno bravi” conoscenze che appartengono a sviluppatori di livello superiore.
Saluti
Riccardo
I ringraziamenti vanno fatti esclusivamente a raybaudi che ha postato la sua funzione personalizzata ed a cui porgo un mio personale grazie.
Io mi sono limitato “solo” a rendere più chiara l’informazione affinché potesse essere fruita da tutti e non esclusivamente dai più bravi.
“filosofia”, la mia, che si ritrova in altri miei post in cui ho messo a disposizione degli gli utenti “meno bravi” conoscenze che appartengono a sviluppatori di livello superiore.
Saluti
Riccardo
-
- Messaggi: 1197
- Iscritto il: domenica 12 marzo 2006, 1:00
- Versione FileMaker: 18
- Sistema operativo: Win10
- Località: Reggio Calabria (RC)
-
- Messaggi: 62
- Iscritto il: mercoledì 3 maggio 2006, 2:00
-
- Messaggi: 1737
- Iscritto il: giovedì 7 ottobre 2004, 2:00
- Località: Lamezia Terme
Forse hai confuso funzione. Questa del post serve per creare dei numeri casuali. Rileggilo.Dagda ha scritto:non era più semplice inserire un campo calcolato con
#anno & #mese & #giorno & (Conteggio ( Giornodelmese::one )+1)
?
io ho utilizzato questa soluzione per un conteggio mensile che riparta sempre ad ogni primo del mese:
#anno & #mese & (Conteggio ( mese::one )+1)

Umiliati e sarai Esaltato, Esaltati e sarai Umiliato
Mac OS X Snow Leopard - FMP 10 Adv.
Mac OS X Snow Leopard - FMP 10 Adv.