# Câu 1: Sinh ngẫu nhiên 500 giá trị từ phân phối đều liên tục trên khoảng [0,5]
set.seed(123)  # Đặt seed để kết quả có thể tái lập
data <- runif(500, min = 0, max = 5)

# Tính kỳ vọng (trung bình) và phương sai
mean_value <- mean(data)
variance_value <- var(data)

# Vẽ biểu đồ histogram
hist(data, breaks = 20, col = "skyblue", main = "Histogram of Uniformly Distributed Data",
     xlab = "Value", ylab = "Frequency")
abline(v = mean_value, col = "red", lwd = 2, lty = 2) # Đánh dấu trung bình bằng đường đỏ

# In kết quả
cat("Kỳ vọng (trung bình):", mean_value, "\n")
## Kỳ vọng (trung bình): 2.476418
cat("Phương sai:", variance_value, "\n")
## Phương sai: 2.022396
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# Đọc tập dữ liệu Iris từ Seaborn
iris = sns.load_dataset("iris")

# Tính trung bình và phương sai của Sepal.Length theo từng loại hoa
stats = iris.groupby("species")["sepal_length"].agg(['mean', 'var'])
print("Trung bình và phương sai của chiều dài đài hoa (Sepal Length):")
## Trung bình và phương sai của chiều dài đài hoa (Sepal Length):
print(stats)
##              mean       var
## species                    
## setosa      5.006  0.124249
## versicolor  5.936  0.266433
## virginica   6.588  0.404343
# Vẽ biểu đồ Boxplot cho từng loại hoa
plt.figure(figsize=(8, 5))
sns.boxplot(x="species", y="sepal_length", data=iris, palette="pastel")
plt.title('Boxplot of Sepal Length by Species')
plt.xlabel('Species')
plt.ylabel('Sepal Length')
plt.show()