Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    numeri random di diversa frequenza

    devo inserire un certo numero di record per un test.
    Un parametro può contenere il valore 1 o 2, ma debbono comparire, 1 con una frequenza del 90%, e 2 con la frequenza del 10%

    Un aiuto?
    Pietro

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ho fatto, grazie lo stesso
    Pietro

  3. #3
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Sicuramente non ho capito, ma se fai un ciclo da uno a dieci, quando crei i valori, verifichi la variabile di incremento e, se è uguale a 10 metti il 2.
    Così facendo però hai sempre il 2 alla decima posizione, potresti allora mettere come variabile incremento un numero random e, verificare quando l'ultima cifra(convertita in string)è uguale a 0.
    Sicuramente è una soluzione inefficiente e magari una "Vaccata", però a botto mi è venuto in mente questo.
    Ciao
    Legnetto

  4. #4
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Originariamente inviato da pietro09
    Ho fatto, grazie lo stesso
    Come??

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Forse (e anche senza il forse ) non mi sono spiegato bene.

    Allora, in pratica debbo riempiere una tabella con un migliaio di record per dei test. Piuttosto che mettere valori fissi, preferisco mettere valori casuali. Alcuni campi, come per esempio, mittente, è un numero random tra 1 e MaxIdUtente, diciamo tra 1 e 455.

    Altri campi, per esempio, elenco comuni, possono contenere un solo comune con una probabilità alta, e una diecina di comuni, con una probabilità molto più bassa.

    Nel primo caso metto:
    codice:
    Comando.Parameters.Add("ID_SOGGETTO", Data.OleDb.OleDbType.Integer).Value = New Random(CInt(Date.Now.Ticks And Integer.MaxValue)).Next(1, 455 + 1)
    cioè scelgo un id_soggetto compreso tra 1 e 455

    nel 2° caso mi sono fatto una funzione di prova (in attesa che qualcuno rispondesse ) ed ho visto che va
    codice:
            Dim rand As New Random(CInt(Date.Now.Ticks And Integer.MaxValue))
            Dim i% = 0
            Dim n1%, n2%, n%
            For i = 1 To 1000000
                n = rand.Next(1, 100 + 1)
                If n >= 1 And n <= 90 Then
                    n1 += 1
                Else
                    n2 += 1
                End If
            Next
            PrintLn(n1 * 100 / 1000000 & ", " & n2 * 100 / 1000000)
    cioè, basta trovare un numero random tra 1 e 100: se è nell'intervallo 1-90, primo caso, altrimenti, secondo caso

    Pietro

  6. #6
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Ok, forse non ti eri spiegato bene e, io non avevo capito, quindi una situazione perfetta....
    Ciao

  7. #7

    Una curiosità?

    A cosa serve il "%" nella definizione delle variabili?

    Grazie,
    Fedrok
    Corsi di Shiatsu a Brescia? Corso di Shiatsu a Brescia?
    ____________________________________
    Visto che la luce viaggia piu' veloce del suono, sara' per questo che molte persone appaiono brillanti finchè non le senti parlare?

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    Re: Una curiosità?

    Originariamente inviato da fedrok
    A cosa serve il "%" nella definizione delle variabili?

    Grazie,
    Allora, o tu sei troppo giovane o io sono troppo vecchio

    E' una vecchia sintassi del basic (gwbasic ), che uso perchè non ho mai trovato nessun valido motivo per vergognarmene
    In pratica,

    Dim x% equivale a Dim x as integer
    Dim x! equivale a Dim x as Single
    Dim x# equivale a Dim x as Double
    Dim x& equivale a Dim x as Long
    Dim x@ equivale a Dim x as Decimal
    Dim x$ equivale a Dim x as String

    Comunque, se preso in piccole dosi non fa male alla salute

    ps.
    Comunque, credevo che qualche spiegazione in più meritasse invece, l'istruzione:
    codice:
    Dim rand As New Random(CInt(Date.Now.Ticks And Integer.MaxValue))


    Pietro

  9. #9
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    CInt(Date.Now.Ticks And Integer.MaxValue
    è un modo di iniziallizzare la classe a seconda del tempo in cui ci si trova in quel momento,usato per cercare di generare numeri casuali + casuali possibili.

  10. #10
    Utente di HTML.it L'avatar di JAEP
    Registrato dal
    Jan 2004
    residenza
    Treviso
    Messaggi
    421

    Re: Re: Una curiosità?

    Originariamente inviato da pietro09
    Allora, o tu sei troppo giovane o io sono troppo vecchio

    E' una vecchia sintassi del basic (gwbasic ), che uso perchè non ho mai trovato nessun valido motivo per vergognarmene
    In pratica,

    Dim x% equivale a Dim x as integer
    Dim x! equivale a Dim x as Single
    Dim x# equivale a Dim x as Double
    Dim x& equivale a Dim x as Long
    Dim x@ equivale a Dim x as Decimal
    Dim x$ equivale a Dim x as String

    Comunque, se preso in piccole dosi non fa male alla salute

    ps.
    Comunque, credevo che qualche spiegazione in più meritasse invece, l'istruzione:
    codice:
    Dim rand As New Random(CInt(Date.Now.Ticks And Integer.MaxValue))


    gwbasic....quelli si che erano bei tempi....
    Tutte le leggi umane, non quelle divine, sono il risultato di uno sforzo di uomini. Altri uomini vengono, modificano, aboliscono, perfezionano. Non ci vuole nulla ad abolire. Distruggere è facile, ma ricostruire è difficile.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.