Loi de Horner

Jul 18, 2017 pm 05:28 PM
分析 基础

Générer des nombres aléatoires

package cn.xf.algorithm.ch02;

import java.util.ArrayList;
import java.util.List;

/**
 * 生产随机数
 * @author xiaof
 *
 */
public class Random {

	/**
	 * 生产一个随机数的数列
	 * @param n  生成n个数列
	 * @param m  数据在0和m-1之间
	 * @param seed  随机初始种子
	 * @param a		参数
	 * @param b		参数
	 * @return
	 */
	public static List<Integer> randomNum(int n, int m, int seed, int a, int b)
	{
		List<Integer> numbers = new ArrayList<Integer>();
		int initData = (a * seed + b) % m;
		numbers.add(Math.abs(initData));	//初始化一个数据
		
		for(int i = 1; i < n; ++i)
		{
			int newData = (a * numbers.get(i - 1) + b) % m;
			numbers.add(Math.abs(newData));
		}
		
		return numbers;
	}
	
	/**
	 * 生产一个随机数的数列
	 * @param n 生成n个数列
	 * @param m  数据在0和m-1之间
     * @param seed  随机初始种子
     * @param a     参数
     * @param b     参数
     * @return
	 */
	public static List<Double> randomNumDouble(int n, int m, int seed, int a, int b) {
	    //创建结果数组
	    List<Double> numbers = new ArrayList<Double>();
	    int initData = (a * seed + b) % m; //取出一个初始值,在0到m之间
	    numbers.add((double) Math.abs(initData));   //加入第一个值
	    //后续数值以前一个数据作为基础种子进行变换
	    for(int i = 1; i < n; ++i) {
	        double newData = (a * numbers.get(i - 1) + b) % m;
	        numbers.add(Math.abs(newData));
	    }
	    
	    return numbers;
	}
	
	public static void main(String[] args) {
//		List<Integer> res = Random.randomNum(10, 10, 998, 58797676, 1);
		List<Double> res = Random.randomNumDouble(10, 10, 998, 58797676, 1);
		for(Double a : res)
		{
			System.out.print(a + "\t");
		}
 	}
}
Copier après la connexion

 

Coefficient de valeur aléatoire

Évaluer

package cn.xf.algorithm.ch06ChangeRule;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.junit.Test;

import cn.xf.algorithm.ch02.Random;

/**
 * 
 * 功能:霍纳法则
 * @author xiaofeng
 * @date 2017年7月13日
 * @fileName HornerRule.java
 *
 */
public class HornerRule {
	/**
	 * 用霍纳法则求一个多项式在一个给定点的值
	 * 输入:一个n次多项式的系数数组P【0...n】(从低到高存储),以及一个数字x
	 * 输出:多项式在x点的值
	 * @param p
	 * @param x
	 */
	public Double horner(List<Double> p, int x) {
		if(p == null || p.size() <=0) {
			return 0d;
		}
		//求结果集
		Double result = p.get(p.size() - 1);
		for(int i = p.size() - 2; i >= 0; --i) {
			//累计往后添加系数数据
			//一次从大到小吧X的系数乘以X,  然后加上下一个次数等级的系数,然后求和,作为新的下一个次数的系数乘数
			result = result * x + p.get(i);
		}
		
		return result;
	}
	
	/**
	 * 普通计算方式
	 * @param p
	 * @param x
	 * @return
	 */
	public Double notHorner(List<Double> p, int x) {
	    if(p == null || p.size() <=0) {
            return 0d;
        }
	    
	    //p是系数存储列表
	    Double result = 0d;  //0次幂的
	    for(int i = 0; i < p.size(); ++i) {
	        result += p.get(i) * doublePow(x, i);
	    }
	    
	    return result;
	}
	
	//求x的n次幂
	public static Double doublePow(double x, int n) {
	    if(x == 0) 
	        return 0d;
	    
	    if(n == 0)
	        return 1d;
	    Double result = 1d;
	    for(int i = 0; i < n; ++i) {
	        result *= x;
	    }
	    
	    return result;
	}
	
	@Test
	public void test1() {
	    //定义的一个数组是方程式的系数,第二个参数是未知数的值
	    //方程:y=5x^5 + 3x^4 + 2x^2 + 3
	    //当x为4的时候
	    HornerRule hr = new HornerRule();
	    List<Double> xishus = new ArrayList<Double>();
	    //这个数组的顺序要按照,0次幂到N次幂的顺序来
	    xishus.addAll(Arrays.asList(3d, 0d, 2d, 0d, 3d, 5d));
	    System.out.println(hr.horner(xishus, 4));
	    //一般方式计算
	    System.out.println(hr.notHorner(xishus, 4));
	    System.out.printf("JOB START OUTPUT: %tF %<tT%n", System.currentTimeMillis());
	}
	
	@Test
    public void compare() {
        // 当x为4的时候
        HornerRule hr = new HornerRule();
        // 建造100个随机数
        List<Double> xishus = Random.randomNumDouble(600, 3, 998, 58797676, 1);
        //求值
        System.out.printf("JOB HORNER START OUTPUT: %tF %<tT%n", System.currentTimeMillis());
        System.out.println(hr.notHorner(xishus, 3));
        System.out.printf("JOB HORNER END OUTPUT: %tF %<tT%n", System.currentTimeMillis());
        System.out.println("######################################################################################");
        System.out.printf("JOB NOTHORNER START OUTPUT: %tF %<tT%n", System.currentTimeMillis());
        System.out.println(hr.notHorner(xishus, 3));
        System.out.printf("JOB NOTHORNER END OUTPUT: %tF %<tT%n", System.currentTimeMillis());
        
    }
}
Copier après la connexion

 

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment implémenter des statistiques et des analyses de données dans Uniapp Comment implémenter des statistiques et des analyses de données dans Uniapp Oct 24, 2023 pm 12:37 PM

Comment implémenter les statistiques et l'analyse des données dans uniapp 1. Introduction générale Les statistiques et l'analyse des données constituent une partie très importante du processus de développement d'applications mobiles. Grâce aux statistiques et à l'analyse du comportement des utilisateurs, les développeurs peuvent avoir une compréhension approfondie des préférences et de l'utilisation des utilisateurs. habitudes. Optimisant ainsi la conception du produit et l’expérience utilisateur. Cet article présentera comment implémenter des statistiques de données et des fonctions d'analyse dans uniapp, et fournira quelques exemples de code spécifiques. 2. Choisissez les outils de statistiques et d'analyse de données appropriés. La première étape pour mettre en œuvre les statistiques et l'analyse de données dans uniapp consiste à choisir les outils de statistiques et d'analyse de données appropriés.

Analyse des raisons pour lesquelles le répertoire secondaire du CMS DreamWeaver ne peut pas être ouvert Analyse des raisons pour lesquelles le répertoire secondaire du CMS DreamWeaver ne peut pas être ouvert Mar 13, 2024 pm 06:24 PM

Titre : Analyse des raisons et des solutions pour lesquelles le répertoire secondaire de DreamWeaver CMS ne peut pas être ouvert. Dreamweaver CMS (DedeCMS) est un puissant système de gestion de contenu open source largement utilisé dans la construction de divers sites Web. Cependant, parfois pendant le processus de création d'un site Web, vous pouvez rencontrer une situation dans laquelle le répertoire secondaire ne peut pas être ouvert, ce qui perturbe le fonctionnement normal du site Web. Dans cet article, nous analyserons les raisons possibles pour lesquelles le répertoire secondaire ne peut pas être ouvert et fournirons des exemples de code spécifiques pour résoudre ce problème. 1. Analyse des causes possibles : Problème de configuration des règles pseudo-statiques : pendant l'utilisation

Analyse de cas d'application Python dans les systèmes de transport intelligents Analyse de cas d'application Python dans les systèmes de transport intelligents Sep 08, 2023 am 08:13 AM

Résumé de l'analyse de cas d'application de Python dans les systèmes de transport intelligents : Avec le développement rapide des systèmes de transport intelligents, Python, en tant que langage de programmation multifonctionnel, facile à apprendre et à utiliser, est largement utilisé dans le développement et l'application de systèmes de transport intelligents. Cet article démontre les avantages et le potentiel d'application de Python dans le domaine du transport intelligent en analysant les cas d'application de Python dans les systèmes de transport intelligents et en donnant des exemples de code pertinents. Introduction Le système de transport intelligent fait référence à l'utilisation de moyens de communication, d'information, de détection et d'autres moyens techniques modernes pour communiquer via

Analyser si le langage de programmation principal de Tencent est Go Analyser si le langage de programmation principal de Tencent est Go Mar 27, 2024 pm 04:21 PM

Titre : Le principal langage de programmation de Tencent Go : Une analyse approfondie En tant que principale entreprise technologique chinoise, Tencent a toujours attiré beaucoup d’attention dans son choix de langages de programmation. Ces dernières années, certains pensent que Tencent adopte principalement Go comme principal langage de programmation. Cet article procédera à une analyse approfondie pour déterminer si le principal langage de programmation de Tencent est Go et donnera des exemples de code spécifiques pour étayer ce point de vue. 1. Application du langage Go dans Tencent Go est un langage de programmation open source développé par Google. Son efficacité, sa concurrence et sa simplicité sont appréciées par de nombreux développeurs.

Analyser les avantages et les inconvénients de la technologie de positionnement statique Analyser les avantages et les inconvénients de la technologie de positionnement statique Jan 18, 2024 am 11:16 AM

Analyse des avantages et des limites de la technologie de positionnement statique Avec le développement de la science et de la technologie modernes, la technologie de positionnement est devenue un élément indispensable de nos vies. La technologie de positionnement statique en fait partie. Elle présente des avantages et des limites uniques. Cet article procédera à une analyse approfondie de la technologie de positionnement statique pour mieux comprendre son état d'application actuel et ses tendances de développement futures. Examinons d’abord les avantages de la technologie de positionnement statique. La technologie de positionnement statique permet de déterminer les informations de position en observant, mesurant et calculant l'objet à positionner. Par rapport à d'autres technologies de positionnement,

Analysez et résolvez les raisons pour lesquelles Tomcat plante Analysez et résolvez les raisons pour lesquelles Tomcat plante Jan 13, 2024 am 10:36 AM

Analyse des causes des crashs de Tomcat et solutions Introduction : Avec le développement rapide d'Internet, de plus en plus d'applications sont développées et déployées sur des serveurs pour fournir des services. En tant que serveur JavaWeb commun, Tomcat a été largement utilisé dans le développement d'applications. Cependant, nous pouvons parfois rencontrer des problèmes de plantage de Tomcat, ce qui entraînera un mauvais fonctionnement de l'application. Cet article présentera l'analyse des causes du crash de Tomcat, fournira des solutions et donnera des exemples de code spécifiques.

Analyse des performances du code ThinkPHP6 : localisation des goulots d'étranglement des performances Analyse des performances du code ThinkPHP6 : localisation des goulots d'étranglement des performances Aug 27, 2023 pm 01:36 PM

Analyse des performances du code ThinkPHP6 : localisation des goulots d'étranglement des performances Introduction : Avec le développement rapide d'Internet, une analyse plus efficace des performances du code est devenue de plus en plus importante pour les développeurs. Cet article explique comment utiliser ThinkPHP6 pour effectuer une analyse des performances du code afin de localiser et de résoudre les goulots d'étranglement des performances. Dans le même temps, nous utiliserons également des exemples de code pour aider les lecteurs à mieux comprendre. Importance de l'analyse des performances L'analyse des performances du code fait partie intégrante du processus de développement. En analysant les performances du code, nous pouvons comprendre où beaucoup de ressources sont consommées

Comment utiliser C++ pour le traitement et l'analyse d'images en temps réel ? Comment utiliser C++ pour le traitement et l'analyse d'images en temps réel ? Aug 26, 2023 am 10:39 AM

Comment utiliser C++ pour le traitement et l’analyse d’images en temps réel ? Avec le développement de la vision par ordinateur et du traitement d’images, de plus en plus d’applications nécessitent le traitement et l’analyse d’images en temps réel. Langage de programmation efficace et puissant, le C++ est largement utilisé dans le domaine du traitement d’images. Cet article explique comment utiliser C++ pour le traitement et l'analyse d'images en temps réel et fournit quelques exemples de code. 1. Lecture et affichage de l'image Avant le traitement de l'image, les données de l'image doivent d'abord être lues à partir d'un fichier ou d'un appareil photo, et l'image traitée doit être affichée. d'abord

See all articles