Spaces:
kooldark
/
No application file

File size: 2,309 Bytes
2dad54b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import streamlit as st
import secrets  # Use secrets instead of random for better randomness
from collections import Counter

# Streamlit app setup
st.set_page_config(page_title="Bầu Cua Tôm Cá - Xác Suất Xúc Xắc 3", page_icon="dice_icon.png", layout="centered")

# Title and instructions
st.title("Bầu Cua Tôm Cá")
st.subheader("Chọn 3 mặt xúc xắc:")

# Dropdown menus for dice faces
valid_faces = ["Bầu", "Cua", "Tôm", "Cá", "Gà", "Nai"]
opposite_faces = {
    "Tôm": "Nai",
    "Nai": "Tôm",
    "Cua": "Bầu",
    "Bầu": "Cua",
    "Gà": "Cá",
    "Cá": "Gà"
}

# Change dropdowns to radio buttons
face_selectors = [st.radio(f"Chọn mặt xúc xắc {i+1}", valid_faces) for i in range(3)]

# Roll times selector
roll_times = st.selectbox("Số lần lắc:", ["1000", "5", "50", "100", "500", "1"])

# Roll dice button
if st.button("Lắc Xúc Xắc"):
    faces = face_selectors
    roll_times = int(roll_times)
    
    # Simulate rolling the dice
    roll_history = []
    for _ in range(roll_times):
        rolled_faces = []
        for face in faces:
            valid_choices = [f for f in valid_faces if f != opposite_faces[face]]
            rolled_faces.append(secrets.choice(valid_choices))  # Use secrets.choice for better randomness
        roll_history.extend(rolled_faces)
    
    # Count the frequency of each face
    face_counts = Counter(roll_history)
    
    # Calculate the probability of each face (%)
    total_rolls = len(roll_history)
    probabilities = {face: (count / total_rolls) * 100 for face, count in face_counts.items()}
    
    # Sort probabilities
    sorted_probabilities = sorted(probabilities.items(), key=lambda x: x[1], reverse=True)
    
    # Sort face counts by the number of rolls in descending order
    sorted_face_counts = sorted(face_counts.items(), key=lambda x: x[1], reverse=True)
    
    # Display results
    st.write(f"Kết quả lắc xúc xắc (tổng cộng {total_rolls // 3} lần):")
    for face, count in sorted_face_counts:
        st.write(f"{face}: {count} lần")
    
    st.write("\nXác suất tổng hợp:")
    for rank, (face, prob) in enumerate(sorted_probabilities, 1):
        st.write(f"{rank}. {face}: {prob:.2f}%")

# Reset button
if st.button("Reset"):
    st.experimental_rerun()