javascript如何实现控制概率

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript如何实现控制概率相关的知识,希望对你有一定的参考价值。

如题,现在有abc三个数,例如a=0,b=1,c=2,。那么a出现的概率为90%,bc分别出现5%,那么要如何写这个随机方法来控制这个概率输出

可以设置随机函数,取值范围是1-100的整数,那么我们认为1-100中每个数字出现的概率相等都是1%,你可以每次调用一下这个函数(随机函数很简单,网上查一下都有)
然后当返回值在1-90中间时,你就认为出现的是a,91-95对应的是b,96-100对应的是c
你只要作一个简单的映射就行,用if else来判断,转换下返回结果就能满足你的要求
代码我就不写了追问

我写的也是这种,但是感觉不够随机性。我其实是想要的思路是设置一个数组,随机插入a,b,c到数组中,最后数组长度是100,abc都在数组的随机位置,然后再利用随机数来选取数组,最后得出值。
因为现在的思路ABC等于是固定在数组的位置。虽然按照概率来算确实也达到了,但是总感觉这样不够随机性

参考技术A 可以用Math.random()随机数0-1,包括0不包括1,得到的数 0<= x < 0.8 输出 a,90%概率
0.8 <= x <0.9为b, 0.9<= x < 1为c

如何将视图中的 javascript 代码中的对象列表传递给控制器​​中的操作方法

【中文标题】如何将视图中的 javascript 代码中的对象列表传递给控制器​​中的操作方法【英文标题】:How to pass a list of objects from a java script code in a View to an action method in a controller 【发布时间】:2020-02-13 07:39:11 【问题描述】:

我在 javascript 编程方面没有太多经验。我想将“视图”中的 javascript 代码中的对象列表传递给 MVC“控制器”中的操作方法。 这是我想要实现的目标——

MVC 模型和控制器:

 Public Class Student
    
        Public int Id get; set;
        Public string Name get; set;
        Public string Address get; set;
    

    Public class StudentController : Controller
     
        Public ActionResult Index()
        
            // Read the data from database, create a list of “Student”
            return View(“Display”, StudentList);
        

        [HttpPost]
        Public ActionResult OrderStudentList(List<Student> StudentList)
        
            // Code to ascend/descend list
        
     

显示.cshtml

    @model IEnumerable<Student>
    // Code that displays student list
    <button onclick="myFunction()">Student Name</button>
    <script>
        function myFunction()
            
                var studentL = @Model.ToList();
                $.ajax(
                url: "@Url.Action("OrderStudentList ", "Student")",
                type: "POST",
                contentType: "application/json",
                data: JSON.stringify( StudentList: studentL ),
                success: function (response) 
                response ? alert("It worked!") : alert("It didn't work.");
                
            );    
    </script>

如您所见,我将“学生”列表传递给名为“显示”的视图。此视图有一个名为“学生姓名”的按钮。单击该按钮时,我想将“Student”列表传递给“StudentController”中的“OrderStudentList”操作方法,它将按升序/降序排列列表。但是当我运行代码时,我从来没有在“OrderStudentList”方法中得到任何值。

这是我迄今为止尝试在上述代码中分配数据值的方法

    data:’@Html.Raw(Model.ToList())’
    data: @Html.Raw(Json.Encode(Model.ToList()));
 Converted a list to an array and tried to copy each element of a list 
   individually to an element of javascript array as follows
        var arrayJs = [];
        for(var i=0; i<= @Model.Count(); i++)
        
            arrayJs.push(@Model.ElementAt(i));
        
   But it gives the syntax error with the “i does not exist in 
   the current context”.
 Created a ViewModel with Student list as a property
        Class StudentList
        
            Public List<Student> StudentList get; set;
        
   Tried passing an instance of a viewModel as a JSON object to action  
   method “OrderStudentList”.

没有任何效果。如果有人提供帮助,我将不胜感激。 谢谢

【问题讨论】:

你试过用字符串引号包裹你的data 对象吗? data: 'JSON.stringify( StudentList: studentL )', 如果我这样做,点击按钮后什么都不会发生。 【参考方案1】:

我不太确定你希望这条线做什么:

var studentL = @Model.ToList();

但无论如何,您需要立即将模型转换为 JSON,您的 Javascript 函数需要如下所示:

function myFunction() 
    $.ajax(
        url: "@Url.Action("OrderStudentList", "Student")",
        type: "POST",
        contentType: "application/json",
        data: '@Html.Raw(JsonConvert.SerializeObject(Model.ToList()))',
        success: function (response) 
            response ? alert("It worked!") : alert("It didn't work.");
        
    );
 

并且您的 Action 方法需要具有以下签名:

    [HttpPost]
    Public ActionResult OrderStudentList(List<Student> model)
    
        // Code to ascend/descend list
    

【讨论】:

非常感谢John M先生。这解决了我的问题。【参考方案2】:
<button onclick="myFunction()">Student Name</button>

//这是使用 $ 语法必须包含的 jquery。它是可用的 //在您的项目目录中,您只需检查并更新以下行。

 <script type="text/javascript">   
    function myFunction() 
        var studentL =  @Html.Raw(Json.Encode(Model));

        $.ajax(
            url: "@Url.Action("OrderStudentList", "Student")",
            type: "POST",
            contentType: "application/json",
            data: JSON.stringify( StudentList: studentL ),
            success: function (response) 
                response ? alert("It worked!") : alert("It didn't work.");
            
        );
       

【讨论】:

我用列表和数组试过这个。在运行时, var studentArr = @Model.ToArray() 行变为: var studentArr = Student[];并抛出错误,“Javascript 严重错误,语法错误”

以上是关于javascript如何实现控制概率的主要内容,如果未能解决你的问题,请参考以下文章

php概率计算

java如何实现这样的随机数字呢?

在Python中编程,如何实现不均等的概率?

jquery如何控制checkbox的个数?优秀选项不能超过三个,同一列不能多选该如何实现?

JavaScript如何实现悬浮层

JavaScript如何实现多线程?