账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    为10000个订单编号,要求订单号范围是0到9999,完全随机,不能有规律,求思路?
    101
    0

    thanks

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 深情迎风散 普通会员 1楼

      这是一个组合优化问题,我们可以使用动态规划的方法来解决。

      首先,我们需要创建一个二维数组dp,其中dp[i][j]表示在前i个订单编号范围内,取出第j个订单编号的概率。我们可以用10000作为行数,10000作为列数,然后从0开始填充这个数组。

      然后,我们需要填充dp数组。对于每个订单编号,我们可以计算出从0到这个订单编号的订单编号总数,然后从这个总数中减去已经计算出的在前i个订单编号范围内取出第j个订单编号的概率,得到需要在前i个订单编号范围内取出第j个订单编号的概率。然后,我们就把这个概率作为dp[i][j]的值。

      最后,dp[0][0]就是1,dp[10000][0]就是0.01,dp[10000][1]就是0.02,以此类推。

      以下是Python的实现代码:

      ```python import random

      def order_number_distribution(): order_numbers = list(range(0, 10001)) order_numbers.sort() n = len(order_numbers) dp = [[0 for _ in range(n)] for _ in range(n)]

      for i in range(n):
          for j in range(1, n):
              if i == 0 or j == 0:
                  dp[i][j] = 1
              else:
                  order_count = order_numbers[i-1] + order_numbers[j-1]
                  dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) * order_count / order_numbers[i] / order_numbers[j]
      
      return dp
      

      ```

      这个函数首先将订单编号列表排序,然后初始化一个2D数组dp。然后,它遍历dp数组,对于每个订单编号,它计算出从0到这个订单编号的订单编号总数,然后从这个总数中减去已经计算出的在前i个订单编号范围内取出第j个订单编号的概率,得到需要在前i个订单编号范围内取出第j个订单编号的概率。最后,它返回dp数组。

    • ╬▼皿▼ 普通会员 2楼

      这是一个组合优化问题,我们可以使用动态规划的方法来解决。

      首先,我们需要创建一个二维数组dp,其中dp[i][j]表示在前i个订单编号范围内,取出第j个订单编号的概率。我们可以用10000作为行数,10000作为列数,然后从0开始填充这个数组。

      然后,我们需要填充dp数组。对于每个订单编号,我们可以计算出从0到这个订单编号的订单编号总数,然后从这个总数中减去已经计算出的在前i个订单编号范围内取出第j个订单编号的概率,得到需要在前i个订单编号范围内取出第j个订单编号的概率。然后,我们就把这个概率作为dp[i][j]的值。

      最后,dp[0][0]就是1,dp[10000][0]就是0.01,dp[10000][1]就是0.02,以此类推。

      以下是Python的实现代码:

      ```python import random

      def order_number_distribution(): order_numbers = list(range(0, 10001)) order_numbers.sort() n = len(order_numbers) dp = [[0 for _ in range(n)] for _ in range(n)]

      for i in range(n):
          for j in range(1, n):
              if i == 0 or j == 0:
                  dp[i][j] = 1
              else:
                  order_count = order_numbers[i-1] + order_numbers[j-1]
                  dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) * order_count / order_numbers[i] / order_numbers[j]
      
      return dp
      

      ```

      这个函数首先将订单编号列表排序,然后初始化一个2D数组dp。然后,它遍历dp数组,对于每个订单编号,它计算出从0到这个订单编号的订单编号总数,然后从这个总数中减去已经计算出的在前i个订单编号范围内取出第j个订单编号的概率,得到需要在前i个订单编号范围内取出第j个订单编号的概率。最后,它返回dp数组。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部