from plotly.graph_objs import Bar, Layout from plotly import offline from die import Die die = Die() die_2 = Die() results = [] # gera o resultado for roll_num in range(1000): result = die.roll() + die_2.roll() results.append(result) # analisa o reusltado frequencies = [] max_result = die.num_sides + die_2.num_sides for value in range(1, max_result + 1): frequency = results.count(value) frequencies.append(frequency) # visiualizando os resultados x_values = list(range(1, max_result + 1)) data = [Bar(x=x_values, y=frequencies)] x_axis_config = {'title': 'Result', 'dtick': 1} y_axis_config = {'title': 'Frequencia'} my_layout = Layout(title='Resultado de 1000 giros em dois d6', xaxis=x_axis_config,
import pygal from die import Die die = Die() results = [] for roll_num in range(1000): result = die.roll() results.append(result) frequencies = [] for value in range(1, die.num_sides+1): frequency = results.count(value) frequencies.append(frequency) # Visualize the results hist = pygal.Bar() hist.title = "Results of rolling one D6 1000 times." hist.x_labels = [str(value) for value in range(1, 7)] hist.x_title = "Result" hist.y_title = "Frequency of Result" hist.add('D6', frequencies) hist.render_to_file('die_visual.svg')
import pygal from die import Die d6 = Die() # Make some rolls and store the results in a list. results = [d6.roll() for _ in range(1000)] # Analyze the results frequencies = [] for value in range(1, d6.num_sides + 1): frequency = results.count(value) frequencies.append(frequency) # Visualize the results hist = pygal.Bar() hist.title = "Results of rolling one D6 1000 times." hist.x_labels = [str(x) for x in range(1, d6.num_sides + 1)] hist._x_title = "Result" hist.y_title = "Frequecy of Result" hist.add('D6', frequencies) hist.render_to_file('die_visual_.svg')
from die import Die import pygal die_1 = Die(8) die_2 = Die(8) results = [] for roll_num in range(100000): result = die_1.roll() + die_2.roll() results.append(result) frequencies = [] for value in range(1, die_1.num_sides + die_2.num_sides + 1): frequency = results.count(value) frequencies.append(frequency) loops = [] for loop in range(1, die_1.num_sides + die_2.num_sides + 1): loops.append("%i" % loop) hist = pygal.Bar() hist.title = "Results of rolling one D6 1000 times" hist.x_labels = loops hist.x_title = "Result" hist.y_title = "Frequency of Result" hist.add('D8+D8', frequencies) hist.render_to_file('die_visual.svg') print(frequencies)
import pygal from die import Die # type: ignore # 创建一个Die6和Die10 die_1 = Die(6) die_2 = Die(10) results = [] for value in range(50000): result = die_1.roll() + die_2.roll() results.append(result) frequencies = [] max_result = die_1.num_sides + die_2.num_sides for value in range(2, max_result + 1): frequency = results.count(value) frequencies.append(frequency) hist = pygal.Bar() hist.title = "Result of rolling a Die6 and Die10 50,000 times" hist.x_labels = [num for num in range(2, max_result + 1)] hist.x_title = "Result" hist.y_title = "Frequency of Result" hist.add("Die6 + Die10", frequencies) hist.render_to_file('histogram_diff_dice.svg')
def reset(self): self.dice = [] self.rewards = 0 for i in range(0, self.game.dice_number): self.dice.append(Die())
#15-6 from die import Die import pygal def num2char(x): return str(x) die0 = Die() die1 = Die() results = [] for roll_num in range(1000): result = die0.roll() + die1.roll() results.append(result) frequencies = [] max_result = die0.num_sides + die1.num_sides for value in range(1, max_result + 1): frequency = results.count(value) frequencies.append(frequency) hist = pygal.Bar() hist.title = "Results of rolling D6 1000 times." hist.x_labels = list(map(num2char, list(range(1, max_result + 1)))) print(hist.x_labels) hist.x_title = "Result" hist.y_title = "Frequency of Result" hist.add('D6+D6', frequencies)
#!/usr/bin/env python # -*- coding: utf-8 -*- """ @version: Python 3.6.3 @author: Seaworth @software: PyCharm Community Edition @file: dice_visual.py @time: 2018/9/6 15:16 """ import pygal from die import Die # 创建一个D6 die_1 = Die() die_2 = Die(10) # 10面的骰子 # 掷几次骰子,并将结果存储在一个列表中 results = [] for roll_num in range(50000): result = die_1.roll() + die_2.roll() # 两个骰子之和为结果 results.append(result) # 分析结果 frequencies = [] max_value = die_1.num_sides + die_2.num_sides + 1 for value in range(1, max_value): frequency = results.count(value) # results中有多少个value frequencies.append(frequency) print(frequencies) # 对结果进行可视化
#!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2021/5/8 5:47 下午 # @Author : Harvey Mei <*****@*****.**> # @FileName: dice_visual.py # @IDE : PyCharm # @GitHub : https://github.com/harveymei/ import pygal from die import Die # 创建两个实例 die_1 = Die() # die_2 = Die() # 投掷两个面数不同骰子 die_2 = Die(10) # 一个6面,一个10面 # 定义空列表用于存储结果 results = [] # for roll_num in range(1000): for roll_num in range(50000): # 修改为摇骰子50000次 result = die_1.roll() + die_2.roll() results.append(result) # 分析结果 frequencies = [] max_result = die_1.num_sides + die_2.num_sides # 计算最大面数值 for value in range(2, max_result): # 遍历最小面数值2到最大面数值之间数值 frequency = results.count(value) # 在结果列表中计数面数值出现的次数并赋值变量 frequencies.append(frequency) # 将统计结果写入列表
_, maskDots = cv2.threshold(maskDots, 75, 255, cv2.THRESH_BINARY_INV) kernelSizeDots = cv2.getTrackbarPos("Erode", "Trackbars") kernelDots = np.ones((2, 2), np.uint8) maskDots = cv2.erode(maskDots, kernelDots) #endregion # Find contours and draw them : Dice #region contours, _ = cv2.findContours(maskDice, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) for c in contours: approx = cv2.approxPolyDP(c, h[1], True) if len(approx) >= cv2.getTrackbarPos("Contours", "Trackbars"): coords = [a[0] for a in approx] d = Die(coords, 0, h[-1]) if (d.isSquare()): color = (0, 200, 0) dice.append(Die(coords, 0, h[-1])) else: color = (200, 0, 0) cv2.drawContours(frame, [approx], 0, (0, 200, 0), cv2.getTrackbarPos("Thiccness", "Trackbars")) cv2.drawContours(maskDice, [approx], 0, (90, 90, 90), cv2.getTrackbarPos("Thiccness", "Trackbars")) cv2.circle(frame, tuple(d.roundedCenter), int(d.minCenterDistance), (0, 0, 255), 1) cv2.circle(frame, tuple(d.roundedCenter), int(d.maxCenterDistance), (255, 255, 255), 1) #endregion
''' 请模拟同时掷两个8面骰子1000次的结果。逐渐增加掷骰子的次数,直到系统不堪重负为止 ''' from die import Die import pygal # 创建两个D6的骰子 die1 = Die(8) die2 = Die(8) # 掷几次骰子,并将结果存储在一个列表中 results = [die1.roll() + die2.roll() for i in range(1000)] # 分析结果,看每个数字出现了多少次 frequencies = [ results.count(value) for value in range(2, die1.num_sides + die2.num_sides + 1) ] print(frequencies) # 对结果进行可视化 hist = pygal.Bar() # 创建条形图 hist.title = "掷两个骰子2000次的结果" # 用于标示直方图的字符串 hist.x_labels = list(range(2, die1.num_sides + die2.num_sides + 1)) # x轴的标签 hist.x_title = "Result" # x轴的标题 hist.y_title = "Frequency of Result" # y轴的标题 hist.add('D8+D8', frequencies) ''' 们使用add() 将一系列值添加到图表中(向它传递要给添加的值指定的标签,还有一个列表, 其中包含 将出现在图表中的值)'''
# Ex 9-13 from die import Die six_sided_die = Die() print("Rolling a 6-sided die 10 times:") for nth_roll in range(10): six_sided_die.roll_die() ten_sided_die = Die(10) print("Rolling a 10-sided die 10 times:") for nth_roll in range(10): ten_sided_die.roll_die() twenty_sided_die = Die(20) print("Rolling a 20-sided die 10 times:") for nth_roll in range(10): twenty_sided_die.roll_die()
import logging from board import Board from die import Die from figure import Figure from game import Game logging.basicConfig(level=logging.INFO) figures = [Figure(name="Päde"), Figure(name="Raffi")] game = Game(board=Board.get_random_board(), die=Die(), figures=figures) result = game.run() print(result)
import pygal from die import Die die = Die() die_1 = Die() results = [die.roll() * die_1.roll() for roll_num in range(1000)] ''' for roll_num in range(1000): result=die.roll()+die_1.roll() results.append(result) ''' frequencies = [] max_result = die.num_sides * die_1.num_sides frequencies = [results.count(value) for value in range(1, max_result + 1)] ''' for value in range(2,max_result+1): frequency=results.count(value) frequencies.append(frequency) ''' hist = pygal.Bar() hist.title = "result of rolling one D6" hist.x_labels = [ '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21' ] hist.x_title = "result" hist.y_title = "frequency"
def main(): d = Die() b = Button()
from die import Die import pygal # Create a D6 die = Die(48) # Make some rolls, and store results in a list results = [] for roll_num in range(500000): result = die.roll() results.append(result) # Analyze the results frequencies = [] for value in range(1, die.num_sides + 1): frequency = results.count( value) # count how many times each number appears in results frequencies.append(frequency) # Visualize the results hist = pygal.Bar() hist._title = "Results of rolling one D6 1000 times" hist.x_labels = [str(x) for x in range(1, die.num_sides + 1)] # for i in range(1, die.num_sides + 1): # hist.x_labels.append(i) hist._x_title = "Result" hist._y_title = "Frequency of Result"
from die import Die import pygal D6 = Die() values = [] frequencies = [] labels = [] #Make some rools an store the results in a list for i in range(1000): values.append(D6.roll()) print(values) #freq of the side for side in range(1, D6.num_sides + 1): freq = values.count(side) frequencies.append(freq) labels.append(side) print(frequencies) #Visualize the results hist = pygal.Bar() hist.title = "Results" hist.x_labels = labels hist.x_title = "Result" hist.y_title = "Frequency of Result" hist.add('D6', frequencies) hist.render_to_file('die_visual.svg')
from die import Die die6 = Die() for t in range(1, 11): print(str(t) + " - ", end='') die6.roll_die() print() die10 = Die(10) for t in range(1, 11): print(str(t) + " - ", end='') die10.roll_die() print() die20 = Die(20) for t in range(1, 11): print(str(t) + " - ", end='') die20.roll_die()
from die import Die import pygal #创建2个D6骰子 die_1 = Die() die_2 = Die(10) de = Die() results = [] for roll_num in range(0, 50000): result = die_1.roll() + die_2.roll() results.append(result) #分析结果 frequencies = [] max_result = die_1.num_sides + die_2.num_sides for value in range(2, max_result + 1): frquency = results.count(value) frequencies.append(frquency) #对结果进行可视化 hist = pygal.Bar() hist.title = "Results of rolling one D6 10000 times." hist.x_labels = [ '2', '3', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16' ] hist.x_title = "Result" hist.y_title = "Frequency of Result" hist.add('D6+D10', frequencies) hist.render_to_file('die_visual.svg') print(frequencies)
from die import Die import matplotlib.pyplot as plt # Criando dois dados D6. die_1, die_2 = Die(), Die() attempts = 10_000 x_results = range(2, 13) # Faz alguns lançamentos e armazena os resultados em uma lista. results = [die_1.roll() + die_2.roll() for roll_num in range(attempts)] # Analiza os resultados. max_result = die_1.num_sides + die_2.num_sides frequencies = [results.count(value) for value in range(2, max_result + 1)] # Usando o matplotlib plt.bar(x_results, frequencies, color='green') # Define o título do gráfico e nomeia os eixos plt.title("Results of rolling tow D6 dice " + str(attempts) + " times.", fontsize=24) plt.xlabel("Result", fontsize=14) plt.ylabel("Frequency of Result") # Define o tamanho dos rótulos das marcações plt.tick_params(axis='both', labelsize=14) plt.show()
#endregion # Find contours and draw them # Dice #region contours, _ = cv2.findContours(maskDice, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) dice = [] for c in contours: approx = cv2.approxPolyDP(c, cv2.getTrackbarPos("Epsilon", "Trackbars"), True) if len(approx) == 4: coords = [a[0] for a in approx] d = Die(coords, 0) if (d.isSquare()): color = (0, 200, 0) dice.append(Die(coords, 0, "blue")) else: color = (200, 0, 0) cv2.drawContours(frame, [approx], 0, color, 2) cv2.drawContours(maskDice, [approx], 0, (90, 90, 90), 2) cv2.circle(frame, tuple(d.roundedCenter), int(d.minCenterDistance), (0, 0, 255), 3) cv2.circle(frame, tuple(d.roundedCenter), int(d.maxCenterDistance), (255, 255, 255), 3) #endregion # Dots #region contours, _ = cv2.findContours(maskDots, cv2.RETR_TREE,
from die import Die from plotly.graph_objs import Bar, Layout from plotly import offline # Create a D6 die = Die(6) # Make some rolls, and store results in list results = [] for roll_num in range(1000): result = die.roll() results.append(result) # Analyze the results frequencies = [] for value in range(1,die.num_sides+1): frequency = results.count(value) frequencies.append(frequency) # Visualize the results x_value = list(range(1, die.num_sides+1)) data = [Bar(x=x_value, y=frequencies)] x_axis_config = {'title': 'Result'} y_axis_config = {'title': 'Frequency of Results'} my_layout = Layout(title='Results of rolling one D6 1000 times', xaxis=x_axis_config, yaxis=y_axis_config) offline.plot({'data': data, 'layout': my_layout}, filename='d6.html')
from die import Die import pygal die1 = Die() die2 = Die() results = [] for roll_num in range(1000): result = die1.roll() + die2.roll() results.append(result) #分析结果:每个点数出现的次数 frequencies = [] for value in range(1, die1.num_sides + die2.num_sides + 1): frequency = results.count(value) frequencies.append(frequency) #对结果进行可视化 hist = pygal.Bar() hist.title = "Results of rolling two D6 dice 1000 times." hist.x_labels = ['1', '2', '3', '4', '5', '6'] hist.x_title = 'Result' hist.y_title = 'Frequency of Result' hist.add('D6', frequencies) hist.render_to_file('die_visual.svg')
next_y = self.y_values[-1] + y_step self.x_values.append(next_x) self.y_values.append(next_y) # 15-6. Automatic Labels: Modify die.py and dice_visual.py by replacing the list # we used to set the value of hist.x_labels with a loop to generate this list automatically. # If you’re comfortable with list comprehensions, try replacing the other # for loops in die_visual.py and dice_visual.py with comprehensions as well. import pygal from die import Die # Create a D6. die = Die() # Make some rolls, and store results in a list. results = [die.roll() for roll_num in range(1000)] # Analyze the results. frequencies = [results.count(value) for value in range(1, die.num_sides + 1)] # Visualize the results. hist = pygal.Bar() hist.title = "Results of rolling one D6 1000 times." hist.x_labels = [str(x) for x in range(1, die.num_sides + 1)] hist.x_title = "Result" hist.y_title = "Frequency of Result"
parser = argparse.ArgumentParser('Simple Dice Roller') parser.add_argument('--number_of_dice', '-n', dest='num_dice', type=int, default=1, help='Number of dice to roll; default 1') parser.add_argument('--sides', '-s', dest='sides', type=int, default=6, help='Sides of the die; default 6') args = parser.parse_args() print('Rolling {}d{}'.format(args.num_dice, args.sides)) results = [] for n in range(args.num_dice): my_die = Die(args.sides) result = my_die.roll() results.append(result) for result in results: print('Rolled: {}'.format(result)) total = sum(results) print('Sum: {}'.format(total))
import matplotlib.pyplot as plt from die import Die #Creating D6 and storing results of rolling 10000 times die_1 = Die() total_rolls = 500000 results = [] for roll in range(total_rolls): results.append(die_1.roll()) frequencies = [] for value in range(min(results), max(results) + 1): frequency_count = results.count(value) frequencies.append(frequency_count) print(frequencies) print(sum(frequencies)) plt.figure(figsize=(10, 8)) unique_values = list(set(results)) plt.plot(unique_values, frequencies, linewidth=2, marker="x", color="orange", markersize=10) plt.axis([ min(results) - 1, max(results) + 1, min(frequencies) - total_rolls * 0.01,
def __init__(self): """Has a pair of dice and an empty rolls list.""" self._die1 = Die() self._die2 = Die() self._rolls = []
import json from die import Die from collections import OrderedDict def encounter_gen(location, die_role): with open(tables+location+'.json') as data_file: data = json.load(data_file) for entry in data['encounter']: if entry['roll'] == die_role: encounter_dict = OrderedDict() encounter_dict['encounter'] = entry['value'] encounter_dict['is_lower'] = entry['lower'] encounter_dict['is_italic'] = entry['italic'] encounter_dict['is_bold'] = entry['bold'] encounter_dict['is_special'] = entry['special'] encounter_dict['number'] = entry['number'] return encounter_dict tables = "tables\\" encounter_location = "abbica_mere" encounter = encounter_gen(encounter_location, str(Die(6).three_die_straight())) for x, y in encounter.items(): print(f'{x:7} \t\t {str(y)}')
# Author: Bojan G. Kalicanin # Date: 24-Dec-2016 # 15-10. Practicing with Both Libraries: Try using matplotlib to make a # die-rolling visualization, and use Pygal to make the visualization for # a random walk. import matplotlib.pyplot as plt from die import Die # Create two D6 dice. die_1 = Die() die_2 = Die() # Make some rolls, and store results in a list. results = [] [results.append(die_1.roll() + die_2.roll()) for roll_num in range(1000)] # Analyze the results. frequencies = [] max_result = die_1.num_sides + die_2.num_sides [ frequencies.append(results.count(value)) for value in range(2, max_result + 1) ] x_values = [i for i in range(2, max_result + 1)] plt.scatter(x_values, frequencies, edgecolor='none', s=10) plt.title("Rolling two dice results.", fontsize=24) plt.xlabel("Value", fontsize=14) plt.ylabel("Result", fontsize=14)
from die import Die turn1 = Die(6, 6) print(rolllist)