【算法】【算法杂谈】让[0,x)区间上的出现概率变为x^k

文章介绍了如何创建一个函数,该函数在[0,1)范围内返回数字,但[0,x)的概率为x^k,其中k是用户输入。提供了Java语言的实现,并提到将学习C和C++版本。作者强调了代码用于学习目的,未来计划开源一个HTTP请求工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

当前所有算法都使用测试用例运行过,但是不保证100%的测试用例,如果存在问题务必联系批评指正~

在此感谢左大神让我对算法有了新的感悟认识!

问题介绍

原问题
已知Math.random返回[0,1)范围上的数,那么落在[0,x)上的概率应该是x
现在实现一个函数仍然返回[0,1)范围的数,但是要求[0,x)上的概率应该是x^k次方,k为用户输入
比如k =2 ,返回的概率应该是x^2

解决方案

原问题
首先实现一个最简单的x^2概率的函数,如何做?
答案是:两次rand取最大值即可

代码编写

java语言版本

原问题:

   /**
     * 二轮测试:让[0,x)区间上的出现概率变为x^k
     * @param k
     * @return
     */
    public static double randomXPowerKCp1(int k) {
        if (k < 1) {
            return 0;
        }
        double res = -1;
        for (int i = 0; i < k; i++) {
            res = Math.max(res, Math.random());
        }
        return res;
    }


c语言版本

正在学习中

c++语言版本

正在学习中

思考感悟

刚开始有点懵逼,后来才理解什么意思,原来就是进行k次的rand,如果出现一次比x大的rand就返回那个大的值即可。那么如果所有值都没有比x大,那么就返回[0,x)范围的数。

最近工作比较忙,所以偷个小懒,但是后面会上一个开源自己写的小组件,名字叫做httpTerminator(基于注解的http请求小工具,希望大家多多支持~)

写在最后

方案和代码仅提供学习和思考使用,切勿随意滥用!如有错误和不合理的地方,务必批评指正~
如果需要git源码可邮件给2260755767@qq.com
再次感谢左大神对我算法的指点迷津!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

元空间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值