رفتن به محتوا

Understanding random number probability in Scratch

این محتوا هنوز به زبان شما در دسترس نیست.

💡 Confused about probability and random numbers? Need help with math concepts in programming? 🚀 Get Help Now

ME

MathCoder_Emma

Posted on January 24, 2024 • Beginner

🎲 Confused about random number chances

I’m working on a game that uses random events and I’m getting confused about probability. I have this code and I’m wondering:

My Question: Is the number 7 more likely to be chosen in this expression?

I’m using an OR condition with two random picks:

  • First random: pick random 6 to 7
  • Second random: pick random 7 to 7
  • Combined with OR operator

Does this make 7 more likely than 6? I’m trying to understand how probability works with multiple random calls! 🤔

PM

ProbabilityMaster_Jake

Replied 2 hours later • ⭐ Best Answer

Great question @MathCoder_Emma! This is a perfect example to understand how probability works in programming. Let me break this down step by step:

🧮 Understanding Your Code

First, let’s analyze what each part does:

flowchart TD A[🎲 OR Expression] --> B[Left Side: pick random 6 to 7] A --> C[Right Side: pick random 7 to 7] B --> D{Possible Values} D --> E[6: 50% chance] D --> F[7: 50% chance] C --> G[Always Returns 7] G --> H[7: 100% chance] E --> I[OR Logic] F --> I H --> I I --> J{Final Result} J --> K[Returns TRUE if either<br/>side is TRUE] style A fill:#e1f5fe style G fill:#fff3e0 style K fill:#e8f5e8

🔍 The Key Insight

Here’s the important part: Your code doesn’t actually choose a number!

    // Your current code (returns true/false, not a number)
<(pick random (6) to (7)) or (pick random (7) to (7))>

// This always returns TRUE because:
// - Left side: 50% chance of 6 or 7 (both are > 0, so TRUE)
// - Right side: Always 7 (which is > 0, so TRUE)
// - TRUE or TRUE = TRUE
  

🎯 What You Probably Want

If you want to actually pick a number with different probabilities, here are better approaches:

Method 1: Weighted Random Selection

    // Give 7 a higher chance than 6
set [random choice v] to (pick random (1) to (3))
if <(random choice) = [1]> then
set [result v] to [6]  // 33% chance
else
set [result v] to [7]  // 67% chance
end
  

Method 2: Multiple Attempts

    // Try multiple times, favoring 7
set [attempt 1 v] to (pick random (6) to (7))
set [attempt 2 v] to (pick random (7) to (7))  // Always 7

// Choose randomly between the two attempts
if <(pick random (1) to (2)) = [1]> then
set [final result v] to (attempt 1)  // 50% chance of 6 or 7
else
set [final result v] to (attempt 2)  // 50% chance of 7
end
// Overall: 25% chance of 6, 75% chance of 7
  

📊 Probability Breakdown

Here’s how different methods affect probability:

📈 Probability Comparison:
pick random 6 to 7: 6=50%, 7=50%
pick random 7 to 7: 7=100%
• Method 1 above: 6=33%, 7=67%
• Method 2 above: 6=25%, 7=75%

The key is understanding that OR operations return true/false, not the actual numbers! 🎯

ME

MathCoder_Emma

Replied 30 minutes later

@ProbabilityMaster_Jake Wow, this completely changed how I think about random numbers! 🤯

I didn’t realize that OR operations return true/false instead of the actual numbers. That explains why my game logic wasn’t working as expected. The weighted random method is exactly what I needed!

Thank you for the detailed explanation! 🙏

MT

MathTeacher_Lisa

Replied 1 hour later

This is a fantastic learning moment! 📚 Here are some additional tips for working with probability in Scratch:

  • 🎯 Test your randomness: Run your code 100 times and count the results
  • 📊 Use variables to track: Keep counters to verify your probability
  • 🔢 Understand ranges: pick random 1 to 10 gives each number 10% chance
  • ⚖️ Balance game mechanics: Use probability to make games fair and fun
    // Testing probability - run this to verify your random logic
repeat [100]
set [test result v] to (pick random (1) to (10))
if <(test result) = [7]> then
change [count of 7s v] by [1]
end
end
say (join [7 appeared ] (join (count of 7s) [ times out of 100])) for [3] seconds
  

Understanding probability helps you create better games and more interesting mechanics! 🎮

VB

Vibelf_Community

Pinned Message • Moderator

🚀 Master Math Concepts in Programming!

Excellent discussion about probability! For those looking to deepen their understanding of math concepts in programming, our tutors can help with:

  • 🧮 Advanced probability and statistics
  • 📐 Geometry and trigonometry in games
  • 🔢 Algorithm optimization and complexity
  • 📊 Data analysis and visualization

📚 Related Math Topics

Ready to combine math and programming like a pro? Get personalized guidance from our expert tutors in the Vibelf app!