import numpy as np import matplotlib.pyplot as plt import random # Translating the JavaScript functions to Python def even(n): return n % 2 == 0 def odd(n): return not even(n) def array_sum(arr): return sum(arr) def random_int(min_val, max_val): return random.randint(min_val, max_val) def fisher_yates(arr): for i in range(len(arr)-1, 0, -1): j = random_int(0, i) arr[i], arr[j] = arr[j], arr[i] def guess_color(deck_size, rounds): def make_deck(size): if odd(size): raise ValueError("Deck size must be even") deck = [i % 2 for i in range(size)] fisher_yates(deck) return deck def one_round(): deck = make_deck(deck_size) table = [] score = 0 for i in range(deck_size): guess = 1 if i == 0 else 1 - round(array_sum(table) / i) if guess == deck[i]: score += 1 table.append(deck[i]) return score / deck_size results = [one_round() for _ in range(rounds)] return array_sum(results) / rounds # Running the guess_color function for each even deckSize from 10 to 100 deck_sizes = range(10, 101, 2) # Even numbers from 10 to 100 rounds = 100 average_scores = [guess_color(deck_size, rounds) for deck_size in deck_sizes] # Plotting the results plt.plot(deck_sizes, average_scores, marker='o') plt.xlabel('Deck Size') plt.ylabel('Average Score') plt.title('Average Score of guessColor as a Function of Deck Size') plt.grid(True) plt.show()