exel generazione di numeri casuali

Anonimo
2016-03-01T19:39:01+00:00

buonasera,

dovrei generare 110 numeri casuali compresi tra  un massimo (0.020) e un minimo (0.010) che abbiano in totale una media pari a 0.015.

qualcuno sa come potrei fare? grazie

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2016-03-02T08:18:55+00:00

Ciao sm910004,

dovrei generare 110 numeri casuali compresi tra  un massimo (0.020) e un minimo (0.010) che abbiano in totale una media pari a 0.015.

qualcuno sa come potrei fare? grazie

hai provato a vedere questo thread:

http://answers.microsoft.com/it-it/office/forum/office\_2007-excel/generare-numeri-casuali-distribuzione-uniforme/08322908-3003-4a21-bc11-960a3792850c?db=5

Saluti,

A.

La risposta è stata utile?

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2016-03-02T08:18:39+00:00

Ciao sm910004,

dovrei generare 110 numeri casuali compresi tra  un massimo (0.020) e un minimo (0.010) che abbiano in totale una media pari a 0.015. 

qualcuno sa come potrei fare? grazie

Per ottenere una media esattamente pari a 0.015 potrebbe richiedere molto tempo! Per ottenere valori casuali con una media pari a 0.015 ± 0.0001, prova qualcosa del genere:

  • Alt+F11 per aprire l'editor di VBA
  • Alt+IM per inserire un nuovo modulo di codice
  • Nel nuovo modulo vuoto, incolla il seguente codice:

'=========>>

Option Explicit

'--------->>

Public Sub Tester()

    Dim WB As Workbook

    Dim SH As Worksheet

    Dim destRng As Range

    Dim arrIn() As Variant

    Dim dVal As Double, dSum As Double

    Dim i As Long

    Const dTolleranza As Double = 0.0001                              '<<=== Modifica

    Set WB = ThisWorkbook

    Set SH = WB.Sheets("Foglio1")                                           '<<=== Modifica

    Set destRng = SH.Range("A1:A110")

    ReDim arrIn(1 To 110)

    Do

        dSum = 0

        Randomize

        For i = 1 To 110

            dVal = Int((200 - 100 + 1) * Rnd + 100) / 10000

            arrIn(i) = dVal

            dSum = dSum + arrIn(i)

        Next i

    Loop Until Abs(0.015 - (dSum / 110)) < dTolleranza

    destRng.Value = Application.Transpose(arrIn)

End Sub

'<<========= 

  • Alt+Q per chiudere l'editor di VBA e tornare a Excel
  • Salva il file con l’estensione xlsm
  • Alt+F8 per aprire  la finestra di gestione delle macro
  • Seleziona Tester | Esegui

Potresti scaricare il mio file di prova SM20160302.xlsm a:

https://www.dropbox.com/s/uwyzyo8pauo6ofj/SM20160302.xlsm?dl=0

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

7 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2016-03-03T18:55:13+00:00

    fatto! vorrei chiedere un'ultima cosa se possibile. se anzichè 110 valori casuali dovessi generare ad esempio 99 valori casuali sempre compresi tra 0.010 e 0.020 e sempre con la stessa media, quali numeri dovrei variare nello script?

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-03-02T23:36:12+00:00

    Ciao sm910004,

    Ti ringrazio per il cortese riscontro.

    Per chiudere questo thread, vorrei gentilmente chiederti di segnare la mia risposta come Risposta. In questo modo, tu aiuterai anche coloro che potrebbero cercare soluzioni ai problemi simili negli archivi della Community.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-03-02T21:28:23+00:00

    grazie!!!

    La risposta è stata utile?

    0 commenti Nessun commento