第一次在Stackoverflow.我希望有人可以帮助我搜索一个算法.

我需要在给定的范围内生成N个随机数,总和到给定的数值!

例如:Generatare 3个数字,总和为11.

范围:

> 1到3之间的值.
> 5到8之间的值.
> 3到7之间的值.

这个例子的生成数字可以是:2,5,4.

我已经搜索了很多,找不到我需要的解决方案.

可以像这样生成像N个数字一样不变的模数:
generate random numbers of which the sum is constant
但是我无法做到这一点.

或者通过产生N个随机值,将它们相加,然后将常数和除以随机和,然后将每个随机数乘以该商G0001.

主要问题,为什么我不能采用这些解决方案是我的每个随机值都有不同的范围,我需要这些值与范围均匀分布(例如,在最小/最大值时不发生频率发生,如果我切断值其小于/大于最小/最大).

我也想到了一个soultion,取一个随机数(在该例子中,值为1,2或3),生成范围内的值(min / max或min之间),剩余的总和取决于哪个更小),减去我给定总和的数量,并保持一切,直到一切都分布.但是这将是可怕的无效.我真的可以使用算法的运行时间固定的方式.

我试图让它运行在Java.但是,该信息不是importend,除非有人已经有一个解决方案准备好了.所有我需要的是一个算法的描述或想法.

解决方法

首先,请注意,问题相当于:

Generate k numbers that sums to a number y,such that x_1,…,x_k –
each has a limit.

第二个可以通过简单地减少数字的下限来实现 – 所以在你的例子中,它相当于:

Generate 3 numbers such that x1 <= 2; x2 <= 3; x3 <= 4; x1+x2+x3 = 2

请注意,第二个问题可以通过各种方式解决,其中之一是:

生成每个元素的h_i重复列表 – 其中h_i是元素i的限制 – 重新排列列表,并选择第一个元素.

在你的例子中,列表是:[x1,x1,x2,x3,x3] – 洗牌并选择前两个元素.

(*)请注意,使用fisher-yates算法可以完成列表的混洗. (您可以在通过所需限制后中间中止算法).

java – 在给定范围内生成总和为给定总和的N个随机数的更多相关文章

  1. iOS和Android的常用随机数生成器

    如果我们在两者中都提供相同的种子,我需要一个在iOS和Android中产生相同数字序列的随机数生成器.我用srand(1000)尝试了rand()函数.但它给出了不同的输出.然后我尝试了mersennetwister.但这也为同一种子提供了不同的序列.有谁可以帮我这个.我正在使用cocos2d-x进行开发.解决方法我已经改编了一个在线CRandomMersenne库,我真的很抱歉,我再也找不到那个

  2. Swift - Swift生成随机数

    在Swift中生成随机数有很多方法可以达到目的这里介绍最简单的两种方法,第一种是使用arc4random()函数,第二种是使用arc4random_uniform()函数1.funcarc4random()->UInt32如果要生成一个生成在一定范围内的随机整数,可以这么写:该方法会生成[min,max]范围内的随机整数如果需要生成随机浮点数,基本思路相同,只不过多了一步因为arc4random返

  3. Swift 中随机数的使用

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  4. Swift随机数产生

    参考Swifterarc4random是一个十分优秀的随机数算法,并且在Swift中也可以使用。它会返回给我们一个任意整数,我们想要在某个范围里的数的话,可以做模运算取余数就行了。但是Swift的Int是和cpu构架有关的:在32位的cpu上实际上他是Int32,而在64位cpu是Int64。arc4random所返回的值不论在什么平台上都是一个UInt32,于是32位的平台就有几率进行Int转换时越界。

  5. Swift - 使用arc4random()、arc4random_uniform()取得随机数

    arc4random()这个全局函数会生成9位数的随机整数1,下面是使用arc4random函数求一个1~100的随机数1vartemp:Int=Int+12,下面是使用arc4random_uniform函数求一个1~100的随机数temp:Int=Int+1

  6. 如何在苹果的Swift语言中生成一个随机数?

    我意识到Swift的书提供了一个随机数生成器的实现。最好的做法是在自己的程序中复制和粘贴此实现?还是有一个库,这样做,我们可以使用吗?使用标准库函数来获得高质量的随机数:arc4random()或arc4random_uniform(),就像在Objective-C中一样。它们在Darwin模块中,因此如果您没有导入AppKit,UIKit或Foundation,则需要导入Darwin。

  7. 用Swift生成随机数

    我需要生成一个随机数。它看起来arc4random函数不再存在以及arc4random_uniform函数。我具有的选项是arc4random_stir(),arc4random_buf和arc4random_addrandom。我找不到任何文档的功能,没有在头文件中的注释提示。Tolearnmoreaboutdrand48()andits“family”ofsimilarfunctionscheckthe07000arc4random_uniformReturnsarandomnumberbetween

  8. 如何在Swift中不重复生成随机数?

    25个如何在不使用Swift语言两次调用数字的情况下生成0到31之间的随机数?您可以创建一个返回随机数生成闭包的函数,如下所示:要使用它,首先调用生成器一次以创建随机序列生成器,然后根据需要多次调用返回值.这将打印出1到6之间的随机值,在重新开始之前循环遍历所有值:

  9. 什么是Swift3中的种子随机数(Xcode8 beta 1)

    我需要在每次执行应用程序时启动相同的随机数列表.srand/rand不再存在了.那我该怎么办?您可以使用Swift3中的srand48(种子)和drand48().

  10. android – 我无法弄清楚如何设置1到100之间的随机数

    我只想制作一个基本的计数器,由于某种原因,我无法弄清楚如何在1到100之间绘制一个随机数.有人可以解释一下我要做什么来绘制1到100之间的随机数吗?这就是我想到的:解决方法

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部