大数据中如何解析n个骰子的点数
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,大数据中如何解析n个骰子的点数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。把n个骰子扔在地上,所有骰子朝上一面的点数之
千家信息网最后更新 2025年02月03日大数据中如何解析n个骰子的点数
大数据中如何解析n个骰子的点数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。
你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。
示例 1:
输入: 1
输出: [0.16667,0.16667,0.16667,0.16667,0.16667,0.16667]
示例 2:
输入: 2
输出: [0.02778,0.05556,0.08333,0.11111,0.13889,0.16667,0.13889,0.11111,0.08333,0.05556,0.02778]
限制:
1 <= n <= 11
解题思路
1,这是一个动态规划题目
2,假设有i个骰子,可以拼出的点数为i,i+1,i+2,......,i*6,共2*i-i+1个
3,i取值范围是1...n
4, 用dp[i][j],表示,i个骰子,点数和为j的组合个数
5,状态转移方程为
dp[i][j]=sum(dp[i-1][j-k]) k=1,2,3,4,5,6
6,由于用到了i-1,所以递增
7,结果取,i=n那一列,j变化范围从 i到2*i的数据,除以 pow(6,n)
代码实现
func twoSum(n int) []float64 {
var r []float64
dp:=make([][]int,n+1)
for i:=0;i
dp[i]=make([]int,n*6+1)
}
s:=pow(6,n)
//1 1...6
//2 2...12
for i:=1;i<=6;i++{
dp[1][i]=1
}
for i:=2;i<=n;i++{
for j:=i;j<=i*6;j++{
for k:=1;k<=6;k++{
if j>k{
dp[i][j]+=dp[i-1][j-k]
fmt.Println( dp[i][j],":",i,j,"=>",i-1,j-k)
}
}
if j==i*6{
// dp[i][j]=1
}
}
}
for j:=n;j<=n*6;j++{
r=append(r,float64(dp[n][j])/float64(s))
}
fmt.Println(dp[n][n:n*6+1])
fmt.Println(dp,s)
return r
}
func pow(x,y int)int{
r:=1
for i:=0;i
r*=x
}
return r
}
/**
解题思路
dp[i][j]表示当n=i时,和为j出现的排列情况总数;
状态转移方程:dp[i][j]=dp[i-1][j-1]+dp[i-1][j-2]+dp[i-1][j-3]+dp[i-1][j-4]+dp[i-1][j-5]+dp[i-1][j-6];
初始条件:dp[1][1]=dp[1][2]=dp[1][3]=dp[1][4]=dp[1][5]=dp[1][6]=1;
代码
class Solution {
public:
vector
twoSum(int n) { vector
>dp(n+1,vector (6*n+1,0)); double num=pow(6,n);
vector
res(5*n+1,1/(double)6); //初始状态
for(int i=1;i<=6;i++)dp[1][i]=1;
for(int i=2;i<=n;i++){ //从2到n计算dp
for(int j=i;j<=i*6;j++){ //表示当n=i时候的点数和取值从i到6i
for(int k=1;k<=6;k++){ //dp[i][j]=dp[i-1][j-1]+dp[i-1][j-2]+dp[i-1][j-3]+dp[i-1][j-4]+dp[i-1][j-5]+dp[i-1][j-6];
if(j-k>0)dp[i][j]+=dp[i-1][j-k]; //第i个骰子点数一定比i-1个骰子点数大
if(i==n)res[j-i]=dp[i][j]/num;
}
}
}
return res;
}
};
*/
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
点数
骰子
状态
输入
数据
代码
思路
方程
概率
示例
范围
帮助
输出
清楚
个数
之和
代表
元素
内容
初始条件
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
工业网络技术专业视频
每日 代理服务器
国动部计算机网络技术
网络安全主题幼儿绘画
永亨银行软件开发岗如何
河北新一代网络技术分类标准
一般服务器硬盘内存有多大
辽宁运营网络安全工程包括什么
iis7服务器管理打不开
手机软件开发培训课程
彩票软件开发一个多少钱
主宰之剑服务器好还是联盟好
戴尔服务器面板usb设置
怀旧服部落服务器战士练级天赋
桌面数据库不可用怎么办
食谱app的数据库设计
网络安全法51号令
数据库审计信息安全
生鲜电商软件开发哪家好
网络安全超简单的手抄报
软件开发市场价位
cs6插入数据库不成功
江苏app软件开发大概要多少钱
网络安全人人有责300字
基带逻辑软件开发
2000的数据库怎么安装
联想服务器t468自动关机
你真的了解网络安全等级保护吗
平板电脑可以用来软件开发吗
软件开发网源码以后如何运行