游戏开发之随机概率的选择算法

实现代码超简单,具体实现方法如下:

有时候当我们的游戏人物遇敌时,我们需我怪物随机根据概率选择处理方式,如下:
1、50%的机会友好的问候
2、25%的几率走开
3、20%的机会立即攻击

4、5%的机会提供金钱作为礼物
下面的这个算法就是跟据概率数组,返回选择的概率索引号。

int Choose(float[] 概率数组)
{
   float total=0;
  //首先计算出概率的总值,用来计算随机范围
   for(int i=0;i<概率数组.length;i++)
   {
      total+=概率数组[i];
   }
  Random rd = new Random();
  float 随机值=rd.Next(0,total);
  for(int i=0;i<概率数组.length;i++)
  {
      if(随机值<概率数组[i])
      {
          return i;
      }
      else
      {
          随机值-=概率数组[i];
      }
  }
   return 概率数组.length-1;
}

以上就是本文的全部内容,希望大家喜欢。

(0)

相关推荐

  • JS实现随机数生成算法示例代码

    1: 复制代码 代码如下: var MT = []; var index = 0; function initialize_generator(seed) { MT[0] = seed; for (var i = 1; i < 624; i++) { MT[i] = 0xffffffff & (0x6c078965 * (MT[i - 1] ^ (MT[i - 1] >> 30)) + i); } } function generate_numbers() { for (var

  • 史上最全的java随机数生成算法分享

    复制代码 代码如下: String password = RandomUtil.generateString(10); 源码如下: 复制代码 代码如下: package com.javaniu.core.util;import java.util.Random;public class RandomUtil { public static final String ALLCHAR = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRS

  • 适用于抽奖程序、随机广告的PHP概率算法实例

    那么我们在程序里必然会设计到算法,即按照一定的概率让用户获得奖品.先来看两个概率算法函数. 算法一 复制代码 代码如下: /** * 全概率计算 * * @param array $p array('a'=>0.5,'b'=>0.2,'c'=>0.4) * @return string 返回上面数组的key */function random($ps){    static $arr = array();    $key = md5(serialize($ps)); if (!isset

  • javascript随机之洗牌算法深入分析

    洗牌算法是我们常见的随机问题,在玩游戏.随机排序时经常会碰到.它可以抽象成这样:得到一个M以内的所有自然数的随机顺序数组. 在百度搜"洗牌算法",第一个结果是<百度文库-洗牌算法>,扫了一下里面的内容,很多内容都容易误导别人走上歧途,包括最后用链表代替数组,也只是一个有限的优化(链表也引入了读取效率的损失). 该文里的第一种方法,可以简单描述成:随机抽牌,放在另一组:再次抽取,抽到空牌则重复抽."抽到空牌则重复抽"这会导致后面抽到空牌的机会越来越大,显然

  • 基于DoS攻击的随机数据包标记源跟踪算法

    作者:饥饿加菲猫(QQ120474) iojhgfti@hotmail.com 摘要: 针对互联网上日益猖獗的拒绝服务攻击(DoS),分析了传统的随机数据包标记算法的性能缺陷,提出一种新的基于散列消息鉴别码的返回跟踪算法HPPM,通过分析其性能指标,说明该算法提高了返回跟踪DoS攻击的效率和准确性. 感谢帮过我的几个高手袁哥[nsfocus], sunwear[E.S.T] , isno[xfocus] , scz[nsfocus] 1.引言 拒绝服务攻击,简称DoS(Denial-of-Ser

  • asp.net(c#)两种随机数的算法,可用抽考题

    第一种算法,存大一点问题.没有查出来  复制代码 代码如下: static void Main(string[] args)  {  //  // TODO: 在此处添加代码以启动应用程序  int singletitlemeasure=5;  int n=1;//声明一个表示考试类型的int变量  Random ran=new Random(unchecked((int)DateTime.Now.Ticks));  int Int1Random;  switch(n)  {  case 1:/

  • python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)

    完整代码下载:http://xiazai.jb51.net/201407/tools/python-migong.rar 最近研究了下迷宫的生成算法,然后做了个简单的在线迷宫游戏.游戏地址和对应的开源项目地址可以通过上面的链接找到.开源项目中没有包含服务端的代码,因为服务端的代码实在太简单了.下面将简单的介绍下随机迷宫的生成算法.一旦理解后你会发现这个算法到底有多简单. 1.将迷宫地图分成多个房间,每个房间都有四面墙. 2.让"人"从地图任意一点A出发,开始在迷宫里游荡.从A房间的1/

  • 游戏开发之随机概率的选择算法

    实现代码超简单,具体实现方法如下: 有时候当我们的游戏人物遇敌时,我们需我怪物随机根据概率选择处理方式,如下: 1.50%的机会友好的问候 2.25%的几率走开 3.20%的机会立即攻击 4.5%的机会提供金钱作为礼物 下面的这个算法就是跟据概率数组,返回选择的概率索引号. int Choose(float[] 概率数组) { float total=0; //首先计算出概率的总值,用来计算随机范围 for(int i=0;i<概率数组.length;i++) { total+=概率数组[i];

  • 游戏开发进阶Unity网格(Mesh\动态合批\骨骼动画\蒙皮)

    目录 一.前言 二.Hello Mesh 三.萌新初识Mesh 1.引擎内置的Mesh 2.Mesh是什么 三.Mesh的创建方式 1.第三方建模软件 2.Unity建模插件:ProBuilder 3.程序动态生成网格 四.Unity中如何显示网格 1.MeshFilter:网格过滤器 2.MeshRenderer:网格渲染器 3.SkinnedMeshRenderer:蒙皮网格渲染器 3.1 骨骼动画 3.2 SkinnedMeshRenderer组件 3.2 使用BakeMesh进行优化 五

  • 网页游戏开发入门教程二(游戏模式+系统)

    一.游戏模式目前webgame游戏模式大体上可以分为以下四类:1.玩家拥有一个城市,不断的升级城市内建筑,建筑可以自动获得物资,可以生产军队,军队之间进行对比数值的战斗.这里我简单的称为Ogame模式. 比较优秀的代表:战神世界II,Travian,Ogame,武林三国,纵横天下,领主online,乱舞春秋,热血三国,方便面三国等等.这是一个比较成熟的模式, 但正因为成熟.因此,玩家接触到这类游戏比较的多,除非你能超过这些优秀的代表,否则就只是简单的重复开发. 对玩家来说:优点:Ogame模式模

  • 总结Python图形用户界面和游戏开发知识点

    基于tkinter模块的GUI GUI是图形用户界面的缩写,图形化的用户界面对使用过计算机的人来说应该都不陌生,在此也无需进行赘述.Python默认的GUI开发模块是tkinter(在Python 3以前的版本中名为Tkinter),从这个名字就可以看出它是基于Tk的,Tk是一个工具包,最初是为Tcl设计的,后来被移植到很多其他的脚本语言中,它提供了跨平台的GUI控件.当然Tk并不是最新和最好的选择,也没有功能特别强大的GUI控件,事实上,开发GUI应用并不是Python最擅长的工作,如果真的需

  • Java游戏开发拼图游戏经典版

    游戏介绍: 拼图游戏是一款经典的益智游戏,游戏难度分为 简单.正常.困难 三种难度,分别对应3*3,4*4,5*5布局,游戏开始前图片被随机打乱,空块位于最右下角,玩家通过点击空块周围图片或者按键方式对图片和空块进行相互交换,直到所有图片都回到原位即为游戏胜利. 本次制作的拼图游戏运行界面如下: 使用素材文件夹: 链接: https://pan.baidu.com/s/10qE7yq6IwU-vWprvc5Axgw   提取码: p16e 游戏设计的思路 对拼图界面的图像信息可以采用二维数组ma

  • Python游戏开发实例之graphics实现AI五子棋

    前言 利用Python+graphics模块实现AI五子棋. 让我们愉快地开始吧~~~ 效果展示 源码 import sys import cfg from modules.misc.Buttons import * from modules.ai.playWithAI import * from modules.online.playOnline import * from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.Q

  • Pygame游戏开发之太空射击实战敌人精灵篇

    目录 视频 敌人精灵 敌人精灵 生成敌人 视频 观看视频 敌人精灵 这是我们“Shmup”项目的第2部分!在本课中,我们将添加一些敌人的精灵供玩家躲避.在本系列课程中,我们将使用Python和Pygame构建一个完整的游戏.它适用于已经了解Python基础知识并希望加深对Python的理解并学习编程游戏基础知识的初学者. 敌人精灵 在这一点上,我们不需要担心我们的敌人精灵是什么,我们只想让它们出现在屏幕上.你可能会认为你的游戏是关于宇宙飞船躲避流星或独角兽躲避飞行的比萨饼 - 就代码而言,这并不

  • IOS游戏开发之五子棋OC版

    先上效果图 - 功能展示 - 初高级棋盘切换效果 实现思路及主要代码详解 1.绘制棋盘 利用Quartz2D绘制棋盘.代码如下 - (void)drawBackground:(CGSize)size{ self.gridWidth = (size.width - 2 * kBoardSpace) / self.gridCount; //1.开启图像上下文 UIGraphicsBeginImageContext(size); //2.获取上下文 CGContextRef ctx = UIGraph

  • Android 游戏开发入门简单示例

    在Android系统上开发游戏是Android开发学习者所向往的,有成就感也有乐趣,还能取得经济上的报酬.那怎样开发Android游戏呢?下面介绍一个简单的入门实例.        一.创建新工程 首先,我们在Eclipse中新建一个名为Movement的工程,并且选择合适的Android SDK,在这里,我们选用的API是比较低的1.5版本,这样可以让其适应性更强.接下来,我们新建两个类,一个是UpdateThread类,一个是SurfaceView类,它们在项目中分别是负责处理线程和画面的两

  • Android游戏开发学习②焰火绽放效果实现方法

    本文实例讲述了Android游戏开发学习②焰火绽放效果实现方法.分享给大家供大家参考.具体如下: 本节介绍在游戏开发中常用到的数学物理应用--粒子系统.粒子系统与上一节的小球有类似的地方,都是通过数学方法和物理公式模拟客观世界中的物体的运动轨迹.不同的是小球更强调个体运动,而焰火粒子等粒子系统更注重整体感觉. 一.焰火粒子效果 1.粒子对象类Particle类和粒子集合类ParticleSet类 每个粒子都为一个Particle类的对象,程序中产生的所有Particle对象都由一个Particl

随机推荐