当前位置: 首页 > news >正文

C#,数值计算——Sobol拟随机序列的计算方法与源程序

1 文本格式

using System;
using System.Collections.Generic;

namespace Legalsoft.Truffer
{
    /// <summary>
    /// Sobol quasi-random sequence
    /// </summary>
    public class Sobol
    {

        public Sobol() { }

        public static void sobseq(int n, double[] x)
        {
            const int MAXBIT = 30;
            const int MAXDIM = 6;

            uint xin = 0;
            int[] mdeg = new int[] { 1, 2, 3, 3, 4, 4 };
            uint[] ix = new uint[MAXDIM];
            List<uint[]> iu = new List<uint[]>(MAXBIT);
            uint[] ip = new uint[] {
                0, 1, 1, 2, 1, 4
            };
            uint[] iv = new uint[] {
                1, 1, 1, 1, 1, 1,
                3, 1, 3, 3, 1, 1,
                5, 7, 7, 3, 3, 5,
                15, 11, 5, 15, 13, 9
            };
            double fac = 0.0;

            if (n < 0)
            {
                for (int k = 0; k < MAXDIM; k++)
                {
                    ix[k] = 0;
                }
                xin = 0;
                if (iv[0] != 1)
                {
                    return;
                }
                fac = 1.0 / (1 << MAXBIT);
                for (int j = 0, k = 0; j < MAXBIT; j++, k += MAXDIM)
                {
                    iu[j] = new uint[iv[k]];
                }
                for (int k = 0; k < MAXDIM; k++)
                {
                    for (int j = 0; j < mdeg[k]; j++)
                    {
                        iu[j][k] <<= (MAXBIT - 1 - j);
                    }
                    for (int j = mdeg[k]; j < MAXBIT; j++)
                    {
                        uint ipp = ip[k];
                        uint i = iu[j - mdeg[k]][k];
                        i ^= (i >> mdeg[k]);
                        for (int l = mdeg[k] - 1; l >= 1; l--)
                        {
                            if ((ipp & 1) != 0)
                            {
                                i ^= iu[j - l][k];
                            }
                            ipp >>= 1;
                        }
                        iu[j][k] = i;
                    }
                }
            }
            else
            {
                uint im = xin++;
                int j = 0;
                for (; j < MAXBIT; j++)
                {
                    if ((im & 1) == 0)
                    {
                        break;
                    }
                    im >>= 1;
                }
                if (j >= MAXBIT)
                {
                    throw new Exception("MAXBIT too small in sobseq");
                }
                im = (uint)(j * MAXDIM);
                for (int k = 0; k < Math.Min(n, MAXDIM); k++)
                {
                    ix[k] ^= iv[im + k];
                    x[k] = ix[k] * fac;
                }
            }
        }

    }
}
 

2 代码格式

using System;
using System.Collections.Generic;namespace Legalsoft.Truffer
{/// <summary>/// Sobol quasi-random sequence/// </summary>public class Sobol{public Sobol() { }public static void sobseq(int n, double[] x){const int MAXBIT = 30;const int MAXDIM = 6;uint xin = 0;int[] mdeg = new int[] { 1, 2, 3, 3, 4, 4 };uint[] ix = new uint[MAXDIM];List<uint[]> iu = new List<uint[]>(MAXBIT);uint[] ip = new uint[] {0, 1, 1, 2, 1, 4};uint[] iv = new uint[] {1, 1, 1, 1, 1, 1,3, 1, 3, 3, 1, 1,5, 7, 7, 3, 3, 5,15, 11, 5, 15, 13, 9};double fac = 0.0;if (n < 0){for (int k = 0; k < MAXDIM; k++){ix[k] = 0;}xin = 0;if (iv[0] != 1){return;}fac = 1.0 / (1 << MAXBIT);for (int j = 0, k = 0; j < MAXBIT; j++, k += MAXDIM){iu[j] = new uint[iv[k]];}for (int k = 0; k < MAXDIM; k++){for (int j = 0; j < mdeg[k]; j++){iu[j][k] <<= (MAXBIT - 1 - j);}for (int j = mdeg[k]; j < MAXBIT; j++){uint ipp = ip[k];uint i = iu[j - mdeg[k]][k];i ^= (i >> mdeg[k]);for (int l = mdeg[k] - 1; l >= 1; l--){if ((ipp & 1) != 0){i ^= iu[j - l][k];}ipp >>= 1;}iu[j][k] = i;}}}else{uint im = xin++;int j = 0;for (; j < MAXBIT; j++){if ((im & 1) == 0){break;}im >>= 1;}if (j >= MAXBIT){throw new Exception("MAXBIT too small in sobseq");}im = (uint)(j * MAXDIM);for (int k = 0; k < Math.Min(n, MAXDIM); k++){ix[k] ^= iv[im + k];x[k] = ix[k] * fac;}}}}
}

相关文章:

C#,数值计算——Sobol拟随机序列的计算方法与源程序

1 文本格式 using System; using System.Collections.Generic; namespace Legalsoft.Truffer { /// <summary> /// Sobol quasi-random sequence /// </summary> public class Sobol { public Sobol() { } public static void sobseq(int n,…...

以太网协议介绍(ARP、UDP、ICMP、IP)

以太网协议介绍 一、ARP协议 请求&#xff1a; 应答&#xff1a; ARP协议&#xff1a; 0x0001 0x0800 6 4硬件类型&#xff1a;2个字节&#xff0c;arp协议不仅能在以太网上运行还能在其他类型的硬件上运行。以太网用1来表示&#xff1b; 协议类型&#xff1a;两字节。指的是a…...

【C++】STL详解(十)—— 用红黑树封装map和set

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;C学习 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 上一篇博客&#xff1a;【C】STL…...

Android学习之路(17) Android Adapter详解

Adapter基础讲解 本节引言 从本节开始我们要讲的UI控件都是跟Adapter(适配器)打交道的&#xff0c;了解并学会使用这个Adapter很重要&#xff0c; Adapter是用来帮助填充数据的中间桥梁&#xff0c;简单点说就是&#xff1a;将各种数据以合适的形式显示到view上,提供 给用户看…...

实验室超声波萃取技术的原理和特点是什么?

梵英超声(fanyingsonic)实验室超声波清洗机 超声波萃取中药材的优越性源于超声波的特殊物理性质。通过压电换能器产生的快速机械振动波&#xff0c;超声波可减少目标萃取物与样品基体之间的作用力&#xff0c;从而实现固液萃取分离。 &#xff08;1&#xff09;加速介质质点运…...

用Python操作Word文档,看这一篇就对了!

本文主要讲解Python中操作word的思路。 一、Hello&#xff0c;world&#xff01; 使用win32com需要安装pypiwin32 pip install pypiwin32 推荐使用python的IDLE&#xff0c;交互方便 1、如何新建文档 from win32com.client import Dispatchapp Dispatch(Word.Application…...

力扣 -- 879. 盈利计划(二维费用的背包问题)

解题步骤&#xff1a; 参考代码&#xff1a; 未优化的代码&#xff1a; class Solution { public:int profitableSchemes(int n, int minProfit, vector<int>& group, vector<int>& profit) {//计划数int lengroup.size();//每一维都多开一行空间vector&…...

虚拟机的三种网络连接模式

文章目录 桥接模式NAT模式主机模式 桥接模式 虚拟系统占用主机网段中的一个IP地址&#xff0c;可以正常上网 NAT模式 主机生成一个非本主机的网段的IP的网卡&#xff0c;同时虚拟系统中使用一个该网段的IP地质&#xff0c;网络数据能通过主机的网卡来代理发送出去&#xff0…...

SQL调优

# 插入数据 页合并 # order by优化 视频教程&#xff1a;34. 进阶-SQL优化-order by优化_哔哩哔哩_bilibili 在创建索引的时候&#xff0c;如果没有设置顺序&#xff0c;是会默认升序的&#xff1b;但phone想要倒序&#xff0c;则需要额外的排序 根据需要&#xff0c;创建联合…...

python写一个开机启动的选项

创建一个Python脚本&#xff0c;以便用户可以选择在开机时启动它&#xff0c;可以使用pyautogui库来创建一个简单的交互式界面&#xff0c;其中用户可以选择是否将程序添加到开机启动项中 import pyautogui import osdef add_to_startup():# 提示用户选择是否要在开机时启动程序…...

1500*A. Boredom(DP)

Problem - 455A - Codeforces Boredom - 洛谷 解析&#xff1a; 首先统计每个数的个数&#xff0c;并且统计出最大值mx。 问题转换为&#xff0c;从1-mx 中选择任意个数字&#xff0c;使其都不相邻&#xff0c;求最大的总和。 开始没有思路&#xff0c;以为直接选取偶数位和奇…...

小程序关键词排名:优化你的应用在搜索中的地位

曾经&#xff0c;我们沉浸在应用商店的浩瀚海洋中&#xff0c;寻找着那个能够满足我们需求的小程序。而今&#xff0c;作为开发者&#xff0c;你的小程序究竟能否在这个无边的数字海洋中引起更多涟漪呢&#xff1f;故事的开始&#xff0c;恰巧就在这个问题的探寻中。让我们携手…...

OpenGLES:3D立方体纹理贴图

效果展示 一.概述 前几篇博文讲解了OpenGLES绘制多种3D图形&#xff0c;并赋予丰富的色彩&#xff0c;但是在这些3D图形绘制过程中&#xff0c;有一点还没有涉及&#xff0c;就是纹理贴图。 今天这篇博文我会用如下六张图片对立方体进行纹理贴图&#xff0c;实现六个面都是贴…...

线程的概述

#include <pthread.h> int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); 功能&#xff1a;创建一个子线程 参数&#xff1a; -thread:传出参数&#xff0c;线程创建成功后&#xff0c;子线程的ID被写到…...

竞赛选题 机器视觉目标检测 - opencv 深度学习

文章目录 0 前言2 目标检测概念3 目标分类、定位、检测示例4 传统目标检测5 两类目标检测算法5.1 相关研究5.1.1 选择性搜索5.1.2 OverFeat 5.2 基于区域提名的方法5.2.1 R-CNN5.2.2 SPP-net5.2.3 Fast R-CNN 5.3 端到端的方法YOLOSSD 6 人体检测结果7 最后 0 前言 &#x1f5…...

python绘图系统27:matplotlib中平面坐标、极坐标和三维坐标的所有绘图函数

文章目录 绘图函数列表为DrawType添加这些绘图函数绘图类别跳转坐标系坐标源代码 绘图函数列表 下面整理了几乎所有matplotlib中的绘图函数&#xff0c;及其在不同坐标轴下的表现。 函数类别2Dpolar3D备注imshow图像X❌❌pcolormesh伪彩图[X,Y,]ZX,Y,Z❌plot曲线图x[,y]x[,y]…...

国庆中秋宅家自省: Python在Excel中绘图尝鲜

【一】国庆中秋: 悟 【国庆中秋】双节来临,相信各位有自己度过的方式,而我却以独特的方式度过了一个说出来不怕各位见笑的双节; 双节到来,没有太多惊喜&#xff0c;也没有太多的负面情绪, 只是喜欢独处,静静反省这些年走过的酸甜苦辣&#xff1b;生活中的许多不欢而散,不期而遇…...

计算机中的进制转换

在计算机软件中&#xff0c;经常需要进行进制转换&#xff0c;这包括二进制、八进制、十进制和十六进制之间的转换。以下是一些常见的转换方法&#xff1a; 二进制转十进制&#xff1a;这是最直接的转换&#xff0c;基本上不需要什么特别的算法。你只需要按照二进制的权值进行…...

Oracle统计信息问题排查常用SQL

Oracle统计信息问题排查常用SQL 对表的基本情况分析统计信息收集作业分析最近一次的统计信息收集修改触发统计信息收集的阈值 对表的基本情况分析 是否为临时表&#xff1a; select owner,table_name,temporary from dba_tables where table_namexxx;是否为分区表&#xff1a…...

css圣杯布局和双飞翼布局

圣杯布局 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, in…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...