Maak NumPy-functies voor aangepaste statistische simulaties
description
Maakt het mogelijk om op maat gemaakte simulaties te genereren voor onderzoek of analyse, met meer flexibiliteit dan standaard statistische functies. Helpt complexe scenario's nauwkeurig te modelleren met NumPy, wat de reproduceerbaarheid en het begrip van statistische processen verbetert.
prompt
Help me een NumPy-functie te maken om het volgende statistische experiment of proces te simuleren: <beschrijf het experiment of proces dat je wilt simuleren>. Geef parameters op zoals ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van een NumPy-functie die een Monte Carlo-simulatie uitvoert voor het worpen van twee eerlijke, onafhankelijke dobbelstenen, elk 10.000 keer. De functie genereert de worpen, berekent de som van de dobbelstenen, en geeft samenvattende statistieken zoals de verdeling van de som, verwachte waarde en standaarddeviatie.
```python
import numpy as np
def simulate_dice_rolls(n_proeven=10000, dobbelstenen=2, eerlijke=True, onafhankelijke_worpen=True):
# Parameters
zijden = 6 # Aantal zijden per dobbelsteen
# Simulatie van worpen
# Als de dobbelstenen eerlijk en onafhankelijk zijn, kunnen we direct genereren
worpen = np.random.randint(1, zijden + 1, size=(n_proeven, dobbelstenen))
# Optioneel: controle of de worpen correct zijn
if niet onafhankelijke_worpen:
# Implementatie voor afhankelijkheid zou hier kunnen
pass
# Bereken de som van de twee dobbelstenen
sommen = np.sum(worpen, axis=1)
# Samenvattende statistieken
verdeling = np.bincount(sommen, minlength=2*dobbelstenen+1) / n_proeven
verwachte_waarde = np.mean(sommen)
std_deviatie = np.std(sommen)
# Uitvoer
resultaten = {
'worpen': worpen,
'sommen': sommen,
'verdeling': verdeling,
'verwachte_waarde': verwachte_waarde,
'std_deviatie': std_deviatie
}
return resultaten
# Voorbeeldgebruik:
resultaten = simulate_dice_rolls()
print("Verdeling van sommen:\n", resultaten['verdeling'])
print("Gemiddelde (verwachte waarde):", resultaten['verwachte_waarde'])
print("Standaarddeviatie:", resultaten['std_deviatie'])
```
Deze code:
- Simuleert 10.000 worpen van twee eerlijke, onafhankelijke dobbelstenen.
- Berekent de som van de twee dobbelstenen voor elke worp.
- Berekent de verdeling van de sommen, de verwachte waarde en de standaarddeviatie.
- Geeft deze resultaten terug in een dictionary voor verdere analyse of visualisatie.
provider: deepseek
model: deepseek-chat
Zeker, hier is een complete Python-functie met NumPy voor de Monte Carlo-simulatie van twee dobbelsteenworpen:
```python
import numpy as np
def simulate_dice_rolls(num_trials=10000):
"""
Simuleert het werpen van twee eerlijke, onafhankelijke dobbelstenen.
Parameters:
num_trials (int): Aantal proeven/simulaties (standaard: 10000)
Returns:
dict: Dictionary met samenvattende statistieken en ruwe resultaten
"""
# Parameters
distribution_type = "Uniforme discrete verdeling"
dice_sides = 6 # Aantal zijden per dobbelsteen
correlation = 0 # Geen correlatie (onafhankelijke worpen)
# Simulatie van twee onafhankelijke dobbelstenen
dice1 = np.random.randint(1, dice_sides + 1, num_trials)
dice2 = np.random.randint(1, dice_sides + 1, num_trials)
# Totale worp per trial
total_rolls = dice1 + dice2
# Bereken statistieken
stats = {
'totaal_gemiddelde': np.mean(total_rolls),
'totaal_std': np.std(total_rolls),
'som_frequenties': np.bincount(total_rolls)[2:13], # Sommen van 2 tot 12
'kans_per_som': np.bincount(total_rolls)[2:13] / num_trials,
'dice1_gemiddelde': np.mean(dice1),
'dice2_gemiddelde': np.mean(dice2),
'correlatie_coëfficiënt': np.corrcoef(dice1, dice2)[0, 1]
}
return {
'parameters': {
'aantal_proeven': num_trials,
'distributietype': distribution_type,
'aantal_zijden': dice_sides,
'correlatie': correlation,
'onafhankelijkheid': True
},
'ruwe_data': {
'dobbelsteen_1': dice1,
'dobbelsteen_2': dice2,
'totaal_per_worp': total_rolls
},
'statistieken': stats
}
# Gebruik van de functie
resultaten = simulate_dice_rolls(10000)
# Print samenvatting
print("Monte Carlo Simulatie Resultaten:")
print(f"Aantal proeven: {resultaten['parameters']['aantal_proeven']}")
print(f"Gemiddelde totale worp: {resultaten['statistieken']['totaal_gemiddelde']:.2f}")
print(f"Standaardafwijking totale worp: {resultaten['statistieken']['totaal_std']:.2f}")
print(f"Gecorreleerd? {resultaten['statistieken']['correlatie_coëfficiënt']:.4f} (≈0 voor onafhankelijk)")
# Kansverdeling voor elke mogelijke som (2-12)
print("\nKansverdeling per som:")
for som in range(2, 13):
kans = resultaten['statistieken']['kans_per_som'][som-2]
print(f"Som {som}: {kans:.4f} ({kans*100:.1f}%)")
```
**Belangrijke kenmerken:**
- **Distributietype**: Uniforme discrete verdeling (1-6)
- **Aantal proeven**: 10.000 (aanpasbaar)
- **Correlatie**: 0 (perfect onafhankelijk)
- **Beperkingen**: Eerlijke dobbelstenen, gehele uitkomsten
**Uitvoerformaat**: Dictionary met:
- Parameters van het experiment
- Ruwe worpgegevens voor analyse
- Samenvattende statistieken (gemiddelden, standaardafwijking, kansverdeling)
De functie retourneert zowel de ruwe data voor verdere analyse als samenvattende statistieken voor directe interpretatie.