有一个动态数组a,约束如下:a的元素在5-10之间;a.sum小于100。 问:为什么随机出来的a绝对值都很大?如何解决这一问题?

题目

有一个动态数组a,约束如下:a的元素在5-10之间;a.sum小于100。

问:为什么随机出来的a绝对值都很大?如何解决这一问题?


int a[];

constraint c1{
a.size() inside [5:10];
a.sum() inside [0:100];
}

… 作者:YvetteGrace https://www.bilibili.com/read/cv21742233/?spm_id_from=333.999.0.0 出处:bilibili


int a[];constraint c1 {a.size() inside [5:10];  // 限制数组长度范围a.sum() inside [0:100];  // 总和约束a.allElements() inside [5:20];  // 限制每个元素的值域在5到20之间mean(a) < 15;  // 限制平均值
}

随机生成满足约束条件的数组时,数组长度和元素值之间存在相互制约的关系。尤其在数组长度较短的情况下,要满足总和小于100的约束,可能出现元素值较大的情况。原因包括:

随机生成的倾向:
随机生成数组时,数组元素的值需要满足 a.sum() < 100。当数组长度较短时(接近下限5),每个元素的值在随机生成时,平均值会相对较大,这样才能更容易满足和的约束。
数组长度对总和的影响:
若数组长度较长(接近上限10),每个元素的值可以较小,因为更多的元素可以分摊总和。例如,如果数组长度是10,每个元素平均值接近10就可以轻松满足总和小于100的要求。
举例说明
数组长度为5:

假设数组长度为5,总和需要小于100,随机生成的每个元素的值可以在 0 到 20 之间。为了更容易满足总和小于100,生成器可能会选择较大值。
示例:a = [15, 18, 20, 22, 20],此时总和为95,每个元素值较大。
数组长度为10:

假设数组长度为10,总和需要小于100,随机生成的每个元素的值可以在 0 到 10 之间。为了更容易满足总和小于100,生成器可以选择较小值。
示例:a = [8, 9, 10, 7, 8, 9, 10, 9, 10, 8],此时总和为88,每个元素值较小。
解决方案
为了避免生成的数组元素值过大,可以增加一些约束条件,确保每个元素的值不至于过大:

限制元素的值域:

明确限制每个元素的最大值,使得生成的元素值不会过大。
java
复制代码
int a[];

constraint c1 {
a.size() inside [5:10]; // 限制数组长度范围
a.sum() inside [0:100]; // 总和约束
a.allElements() inside [5:20]; // 限制每个元素的值域在5到20之间
}
调整生成策略:

如果可以控制生成策略,增加生成的均匀性,使得元素值不会集中在上限附近。
增加更多约束:

增加约束条件,限制平均值或标准差,使得生成的数组更加均衡。
java
复制代码
int a[];

constraint c1 {
a.size() inside [5:10]; // 限制数组长度范围
a.sum() inside [0:100]; // 总和约束
a.allElements() inside [5:20]; // 限制每个元素的值域在5到20之间
mean(a) < 15; // 限制平均值
}
通过这些约束条件,可以有效避免生成的数组元素值过大,同时满足总和小于100的要求。这样即使数组长度较短,每个元素的值也不会过大,从而更均衡地满足约束条件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/48940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十一章 添加设备树节点

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

linux禁用root

linux禁用root 1. 禁止普通用户切换到root1.1 sudo -i和sudo -s的区别1.2 sudo -i和直接登录root账号的区别1.3 禁止sudo -i切换root1.4 禁止su - root切换root 2. 禁止root远程登录2.1 ssh禁止root登录2.2 禁止远程桌面登录 本文主要介绍&#xff1a; 如何禁止普通用户切换到r…

Java---后端事务管理

代码世界聚眸光&#xff0c;昼夜敲盘思绪长。 算法心间精构建&#xff0c;编程路上细思量。 屏前架构乾坤定&#xff0c;键上飞驰智慧扬。 默默耕耘成果现&#xff0c;创新科技铸辉煌。 目录 一&#xff0c;概念 二&#xff0c;Spring事务管理 三&#xff0c;rollbackFor事务回…

智能合约中最常见的11种函数

下面列出了一些常见的智能合约函数及其用途&#xff0c;并提供了一些基本的示例。 1. 构造函数 (constructor) 构造函数用于初始化智能合约的状态变量。它只在合约部署时被调用一次。 示例: contract MyContract {address public owner;constructor() {owner msg.sender;}…

运维锅总浅析Kubernetes之Ceph

Ceph 的核心组件有哪些&#xff1f;Ceph读写数据流程及故障自愈是怎样的&#xff1f;如何对Ceph部署架构进行调优&#xff1f;如何用Ceph集成到kubernetes&#xff1f;希望本文能帮您解答这些疑惑&#xff01; 一、Ceph简介 Ceph 是一个开源的分布式存储系统&#xff0c;旨在…

sqlalchemy打印query的SQL和参数

sqlalchemy打印query的SQL和参数 在使用 SQLAlchemy 时,可以通过几种方式来打印生成的 SQL 查询和参数。这对于调试和理解程序生成的实际数据库查询非常有用。以下是一些方法: 1. 使用 str(query) 可以直接使用 str(query) 方法来获取 SQLAlchemy 查询对象生成的 SQL 语句…

PySide(PyQt)使用QPropertyAnimation制作动态界面

主脚本&#xff1a; # encoding: utf-8 import os import sysfrom PySide6.QtCore import QPropertyAnimation, QEasingCurvefrom UIS import *# 主画面类 class MainWindow(QMainWindow, animationButton_ui.Ui_MainWindow):def __init__(self):super().__init__()self.setup…

韩顺平0基础学Java——第37天

p736-758 MySQL三层结构 1.所谓安装Mysql数据库&#xff0c;就是在主机安装一个数据库管理系统(DBMS)&#xff0c;这个管理程序可以管理多个数据库。DBMS(database manage system) 2.一个数据库中可以创建多个表,以保存数据(信息)。 3.数据库管理系统(DBMS)、数据库和表的关系…

Android 性能之刷新率设置和管理

目录 1. 刷新率和帧率 2. 多种刷新率 3. 基本原理 3.1 屏幕 & 显示控制器 3.2 Composer Service 4. Framework 策略 4.1基本架构 4.2 刷新率设置项的定义 4.2.1 最低刷新率 4.2.2 默认刷新率 & 默认的用户设置刷新率 4.2.2.1 设置入口 4.2.2.2 设置场景 4…

从零开始:在linux系统安装MongoDB数据完整指南 新手常用命令

1 前言 MongoDB 是为快速开发互联网应用而设计的数据库系统。MongoDB 的设计目标是极简、灵活、作为 Web 应用栈的一部分。MongoDB 的数据模型是面向文档的&#xff0c;所谓文档是一种类似于json的结构。 官网教程&#xff1a;https://www.mongodb.com/docs/manual/ 2 安装部…

【接口自动化_11课_框架实战:基于封装的框架进行实战演练-下】

目标&#xff1a; 在原有基础上进行框架优化&#xff0c;本内容不做强制要求&#xff0c;了解即可。 1. Faker&#xff08;伪造器&#xff09;模块生成数据 2. 实战&#xff1a;结合框架动态生成请求数据 3. 实战&#xff1a;响应进行动态断言处理 一、 Faker&#xff…

LoFTR关键点特征匹配算法环境构建与图像匹配测试Demo

0&#xff0c;LoFTR CVPR 2021论文《LoFTR: Detector-Free Local Feature Matching with Transformers》开源代码 1&#xff0c;项目主页 LoFTR: Detector-Free Local Feature Matching with Transformers 2&#xff0c;GItHub主页 GitHub - zju3dv/LoFTR: Code for "…

微软蓝屏事件对企业数字化转型有什么影响?

引言&#xff1a;从北京时间2024年7月19日&#xff08;周五&#xff09;下午2点多开始&#xff0c;全球大量Windows用户出现电脑崩溃、蓝屏死机、无法重启等情况。事发后&#xff0c;网络安全公司CrowdStrike称&#xff0c;收到大量关于Windows电脑出现蓝屏报告&#xff0c;公司…

畅游时空|虚拟世界初体验,元宇宙游戏如何开发?

在元宇宙中&#xff0c;用户可以通过虚拟身份进行互动、社交、工作和娱乐&#xff0c;体验与现实世界平行的生活和活动。元宇宙不仅仅是一个虚拟空间&#xff0c;更是一个融合了虚拟和现实的生态系统&#xff0c;具有巨大的发展潜力和应用前景。 在不断发展的数字环境中&#x…

简单几步,教你使用scikit-learn做分类和回归预测

前言 scikit-learn是基于Python的一个机器学习库&#xff0c;你可以在scikit-learn库中选择合适的模型&#xff0c;使用它训练数据集并对新数据集作出预测。 对于初学者来说&#xff0c;有一个共同的困惑&#xff1a; 怎么使用scikit-learn库中的模型做预测&#xff1f; 本文…

IOS微软语音转文本,lame压缩音频

在IOS开发中&#xff0c;用微软进行语音转文本操作&#xff0c;并将录音文件压缩后返回 项目中遇到了利用微软SDK进行实时录音转文本操作&#xff0c;如果操作失败&#xff0c;那么就利用原始音频文件通过网络请求操作&#xff0c;最终这份文件上传到阿里云保存&#xff0c;考…

MongoDB教程(十五):MongoDB原子操作

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、MongoD…

11 深度推荐模型演化中的“范式替换“灵活组合

上一课时&#xff0c;我们介绍了 DIEN 模型添加了 RNN中 的 GRU&#xff0c;使模型获得了对序列数据的建模能力&#xff1b;而 DSIN 模型不仅使用了 RNN 中的 bi-LSTM&#xff0c;还使用了 Transformer 组件。 由此可见&#xff0c;在新的演化模型中&#xff0c;根据场景和数据…

Lua脚本简单理解

目录 1.安装 2.语法 2.1Lua数据类型 2.2变量 2.3lua循环 2.4流程控制 2.5函数 2.6运算符 2.7关系运算符 3.lua脚本在redis中的使用 3.1lua脚本再redis简单编写 3.2普通锁Lua脚本 3.3可重入锁lua脚本 1.安装 centos安装 安装指令&#xff1a; yum -y update yum i…

学习Servlet

什么是Servlet&#xff1f; Servlet是sun公司提供的一门用于开发动态web资源的技术&#xff0c;可以实现和客户端的交互&#xff0c;接收客户端请求和给客户端返回响应。 Servlet的实现类 Servlet接口SUN公司定义了两个默认实现类&#xff0c;分别为&#xff1a;GenericServlet…