王庭茂w

王庭茂w 查看完整档案

填写现居城市  |  填写毕业院校  |  填写所在公司/组织填写个人主网站
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 个人简介什么都没有

个人动态

王庭茂w 赞了回答 · 2015-12-30

解决为什么undefined、NaN和Infinity可以被赋值,而null不可以?

自问自答了,不过采纳了jasonintju的回答,因为他是最先回答出来。

  • undefinedNaNInfinity是全局对象window的属性。所以可以被赋值,但是由于它们的内部属性[[writable]]false,所以赋值实际上无效。证明:

    Object.getOwnPropertyDescriptor(window, 'undefined');
    
    // 结果:
    // Object {value: undefined, writable: false, enumerable: false, configurable: false}

    可见,undefined确实是window的属性,并且不可写。

  • nulltruefalse类似,是字面量,属于JavaScript的保留字。换句话说,跟123'foobar'是一类的,当然不能赋值。

参考:
1. ECMA-262 Edition 5.1: 15.1 The Global Object
2. ECMA-262 Edition 5.1: 7.6.1 Reserved Words

关注 7 回答 4

王庭茂w 赞了回答 · 2015-12-30

解决为什么undefined、NaN和Infinity可以被赋值,而null不可以?

因为null是js的关键字,而undefined虽然含义和null很像,但是他是js预定义的一个全局变量,他的值就是'undefined'。
其实早在ES3中,有一个bug,undefined是一个可读可写的变量,可以给他赋任意值,但到了ES5就被修复了,他是一个只读的值,所以虽然没有报错,但是赋值语句是没有效果的。

关注 7 回答 4

王庭茂w 赞了回答 · 2015-12-30

解决为什么undefined、NaN和Infinity可以被赋值,而null不可以?

undefined/NaN/Infinity是全局属性,这些属性是不可写(writable:false)的,也就是说在全局作用域内不能重新赋值(赋值无效,不会报错);
MDN-undefined
null是一个JavaScript字面量(而不是全局对象的一个属性),不能对其赋值。
MDN-null

关注 7 回答 4

王庭茂w 赞了问题 · 2015-12-15

解决用data-*存数据好么?

场景是类似这样的:
屏幕上有许多“石头”,每个“石头”都有自己的属性,例如质量,分数和速度等等。当鼠标点击石头的时候,显示出石头的各个属性。
我现在的解决方法是讲所有属性都放在dom上,用data-*来保存。

<div class="rocks" data-gram="10" data-score="100" data-speed="10"></div>

我想知道这样使用data-*对么,会有什么缺点么?
还有其他更好的方法么?

关注 10 回答 5

王庭茂w 回答了问题 · 2015-12-15

急求一个问题,是关于生成图片的。

先Google,或者至少百度一下啊

PHP自带GD库并且有中文文档,可以进行简单的图片处理。复杂的处理可以使用Cairo扩展

Google: php image processing

关注 3 回答 1

王庭茂w 赞了问题 · 2015-12-15

wifi如何从众多设备中接收到想要的信息。

无线路由器如何区分哪些信号来自哪些设备?环境中那么多无线电信号,怎么知道哪些信号是需要的。就算有不同频率,但是我认为所有的频率都会被天线接收到,他又如何区分出需要的频率。

关注 3 回答 1

王庭茂w 赞了回答 · 2015-12-15

解决用程序生成n个随机数,要求n个数的和等于100

不妨换个角度看这个问题,会简单很多:把100个1随机分配给N个数。所以循环100次,每次随机选中第1到N间的某个数,给它加1。
如果要求不能有数为0,则一开始每个数初始化为1,然后只循环90次即可。

关注 37 回答 25

王庭茂w 赞了回答 · 2015-12-15

解决用程序生成n个随机数,要求n个数的和等于100

1, 先生成n个随机数
2, 对这n个数的和m
3, 用100除以m, 求出放大系数k
4, n个随机数分别乘以k

这个方法是有精度损失的, 我测试一般在99.9 - 100.1之间
放个python3的代码

import random

def foo(n, m):
    numbers = [random.random() for _ in range(n)]
    summation = sum(numbers)
    k = m / summation
    return [i * k for i in numbers]

if __name__ == '__main__':
    res = foo(10,100)
    print('10个数为:', res)
    print('它们的和为:', sum(res))

输出:

10个数为: [11.656631528447768, 16.926541353866945, 11.491003842424307, 15.187012385101323, 1.4760319842835616, 8.838953893828934, 14.315979522491865, 3.882534453021053, >8.290003662873072, 7.935307373661164]
它们的和为: 99.99999999999999

关注 37 回答 25

王庭茂w 赞了回答 · 2015-09-30

解决一道简单的算法题

这个应该不涉及到算法啥的,要求所用到的物品最少,那就是尽量使用价值大的物品,
用30从d-》a取整,取余,整数就是当前的要用多少个,余数是剩下的,继续往下运算,直到分配完为止

//===============================
先看一下问题:
1、没说30一定要分配完
2、要求物品最少

所以我觉得我给出解法没什么问题,勉强算贪心算法

大家都说是背包问题,我认为不是
1、背包问题是两个维度考虑,重量和价值而这里只有价值
2、背包问题要求最后价值最大化,这里仅要求物品最少

关注 15 回答 9

王庭茂w 赞了回答 · 2015-09-09

解决百度面试题-汽水选择问题

好吧, 确实是三门问题. 写了代码验证, 不换 赢的概率1/3, 换的话是2/3

Java代码如下:

@Test
public void threeDoor() {
    int totalRun = 1_000_000, succCountNoChange = 0, succCountChange = 0;
    boolean bottles[] = new boolean[3];
    Random r = new Random(), r1 = new Random();
    
    for (int i = 0; i < totalRun; i++) {
        // 三瓶随机放一瓶冰的
        Arrays.fill(bottles, false);
        bottles[r.nextInt(3)] = true;
        
        // 我随机选一个
        int mePick = r1.nextInt(3), shePick = 0, left = 0;
        // 店员从剩下两个选一个不冰的
        while (bottles[shePick] || shePick == mePick) 
            shePick++;
        // 挑剩下的
        while (left == shePick || left == mePick) 
            left++;
        
        if (bottles[mePick]) // 不换
            succCountNoChange++;
        if (bottles[left])   // 换了
            succCountChange++;
    }
    System.out.println("换: "+ (float)succCountChange / totalRun);
    System.out.println("不换: "+ (float)succCountNoChange / totalRun);
}    

结论是:

换: 0.66556
不换: 0.33444

以下作废

我觉得 在 "店员告诉你B不是冰的" 之后, 这个问题转变为 从两瓶里(一瓶冰 一瓶不冰), 选出冰的. 所以换不换一样.

更新

我就没考虑 店员 会使诈. 这个黑暗的社会啊, 小朋友都被带坏了.

假如店员说实话, 那么有四种情况:

店员    我  
不冰1   不冰2   冰
不冰1   冰      不冰2
不冰2   不冰1   冰
不冰2   冰      不冰1

所以对我来说, 换不换一样.

关注 66 回答 41

认证与成就

  • 获得 16 次点赞
  • 获得 19 枚徽章 获得 1 枚金徽章, 获得 6 枚银徽章, 获得 12 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2014-11-16
个人主页被 677 人浏览